当我使用 sybase 提供程序 Sybase.AdoNet4.AseClient 在 C# ADO.NET 中运行 writetext sql 命令时出现错误。 我尝试了很多不同的东西,例如使用参数索引、命名参数等。 有人可以帮忙吗? 我在下面显示示例代码。
AseConnection cn = new AseConnection(connection.ConnectionString);
cn.Open();
//..... there is other code here that calls a stored procedure and gets textpointer
// reference, but I am leaving it out to keep it short and simple
AseCommand cmd2 = new AseCommand("writetext mytable.column1 @textPointer @bigText", cn);
cmd2.CommandType = CommandType.Text
cmd2.Parameters.Add(new AseParameter("@textPointer", AseDbType.VarBinary, 16));
cmd2.Parameters["textPointer"].value = textPointerOut.value
cmd2.Parameters.Add(new AseParameter("@bigText", AseDbType.Text));
cmd2.Parameters["bigText"].value = bigText;
cmd2.ExecuteNonQuery();
CMD2.ExecuteNoQuery(( 抛出异常,错误是必须声明变量@textPointer
更新:如果我在下面尝试这种语法,我会收到一个错误,说"@bigText"附近的 sntax 不正确
AseCommand cmd2 = new AseCommand("{writetext mytable.column1 @textPointer @bigText}", cn);
我太坚持将AseParameter传递给动态SQL了。 无需使用命名参数。 使用动态 sql,我必须执行以下操作:
- 声明文本指针变量
- 获取指向我要更新的列的指针
- 使用 writetext 命令更新列