обновить таблицу в db2 построчно из .net - PullRequest
0 голосов
/ 19 июня 2009

Я выполняю некоторые действия над таблицей, извлекаемой из базы данных db2 строка за строкой в ​​проекте C #. но когда я пытаюсь обновить его с помощью курсоров строка за строкой в ​​базе данных, используя следующую инструкцию, генерируется исключение:

selectCommand.CommandText = "DECLARE crsr1 CURSOR FOR select * from " + tableName+" ;" 

Насколько я понимаю, использование выражений курсоров db2 не поддерживается в языках .net. Я подключен к базе данных с помощью драйверов 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"

любая помощь или предложения высоко ценятся.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2014

Вы должны просто поместить часть «SELECT» в текст команды и использовать ExecuteResultSet метод DB2Command, чтобы вернуть набор результатов, который оборачивает прокручиваемый обновляемый курсор.

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");
   }
}
0 голосов
/ 18 июля 2009

Я думаю, что вы, вероятно, хотите поместить это в процесс - обычно вы не делаете 'объявление курсора ...' вне хранимого процесса {если вы не отлаживали в CLI или что-то еще}

...