使用 sybase AseCommand 运行 ExecuteNonQuery() 时出错



当我使用 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,我必须执行以下操作:

  1. 声明文本指针变量
  2. 获取指向我要更新的列的指针
  3. 使用 writetext 命令更新列

最新更新