我对在C#项目中逐行从db2数据库检索的表执行某些操作。 但是当我尝试使用以下语句逐行将游标更新到数据库时会生成异常:
selectCommand.CommandText = "DECLARE crsr1 CURSOR FOR select * from " + tableName+" ;"
根据我对此的理解,.net语言不支持使用db2的游标语句。我使用IBM DB2 ODBC驱动程序连接到数据库。
是否有任何方法可以使用游标,或者如果有人可以判断我是否遗漏了这些内容。
我在网上做了很多搜索,但在这个问题上没有太多可用。
这是我对上述陈述的例外 -
"ERROR [42601] [IBM][CLI Driver][DB2/NT] SQL0104N An unexpected token \"DECLARE CRSR1 CURSOR FOR select * from MYTA\" was found following \"BEGIN-OF-STATEMENT\".
Expected tokens may include: \"<space>\". SQLSTATE=42601\r\n"
非常感谢任何帮助或建议。
答案 0 :(得分:0)
我认为您可能希望将其放入proc中 - 您通常不会在存储过程之外执行'声明游标..'除非您在CLI中进行调试或其他事情}
答案 1 :(得分:0)
您应该将“SELECT”部分放在命令文本中,并使用DB2Command的ExecuteResultSet方法返回一个包装可滚动可更新游标的结果集。
selectCommand.CommandText = "select * from " + tableName+" ;"
using(var result = selectCommand.ExecuteResultSet(DB2ResultSetOptions.Updatable))
{
while (result.Read())
{
//set value of 2nd column to 'Hello'
result.SetString(1, "Hello");
}
}