当我在C# ADO.NET中使用Sybase提供者Sybase.AdoNet4.AseClient运行writeetext 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);
我在向动态SQL传递AseParameter时被卡住了。 不需要使用命名参数。 使用动态SQL,我不得不做以下工作。