Обновление таблицы ошибок при подключении dl2 CLI / ODBC из приложения C? - PullRequest
0 голосов
/ 15 марта 2019

Ошибка при обновлении удаленной базы данных из приложения C, подключенного через драйвер DB2 CLI / ODBC.

Ошибка возникает с функцией SQLExecute оператора UPDATE (возвращает -1).

SQLSTATE: 42828, собственный код ошибки: 4294966786, [IBM] [драйвер CLI] [DB2 / AIX64] SQL0510N ОБНОВЛЕНИЕ или УДАЛЕНИЕ не разрешено для указанного курсора. SQLSTATE = 42828

Спасибо, Мохаммед Шамшад

1 Ответ

0 голосов
/ 15 марта 2019

Ошибка программирования.Дополнительная информация по ссылке ниже.
db2 "? SQL0510N "

SQL0510N ОБНОВЛЕНИЕ или УДАЛЕНИЕ не разрешено для указанного курсора.

Объяснение :

Программа попыталась выполнить оператор курсора UPDATE или DELETE WHERE CURRENT OF для определения таблицы или представления, которое не разрешает запрошенную операцию обновления или удаления.Например, эта ошибка может возникать при удалении из представления, доступного только для чтения, или в обновлении, где курсор не был определен с предложением FOR UPDATE.

Из предоставленного файла журнала:

SQLPrepare (65537, ВЫБРАТЬ * ИЗ ПУТИ, ГДЕ TRMCAU =? И PRFCAU =? И LVL2AU =? ЗАКАЗАТЬ TRCCAU ASC, PRFCAU ASC, LVL2AU ASC, ОПТИМИЗИРОВАТЬ ДЛЯ 40 ROWS, SQL_NTS);, SPAUTHU);
...
SQLPrepare (65539, ОБНОВЛЕНИЕ SPAUTH установлено TRMCAU = ?, PRFCAU = ?, LVL2AU = ?, AUTHAU =? Где ток SPAUTHU, SQL_NTS);
SQLExecute (65539);

[ОШИБКА] 0315-152416 Обработка 31244 Файл isp406000o / qcsrc / TestUpd1.c Строка 1653: SQLSTATE: 42828, собственный код ошибки: 4294966786, [IBM] [драйвер CLI] [DB2 / AIX64] SQL0510N ОБНОВЛЕНИЕ илиУДАЛЕНИЕ не разрешено для указанного курсора.SQLSTATE = 42828

Курсор SPAUTHU не может быть обновлен, но вы пытаетесь выполнить позиционное обновление для него.
DECLARE CURSOR оператор :

Столбец в списке выбора внешнего полного выбора, связанного с курсором, имеет значение обновляемый , если выполняется любое из следующих условий:

  • Курсор удаляется
    ...

Курсор можно удалить, если выполняется каждое из следующих условий:
...

  • Внешний полный выбор не включает в себя предложение ORDER BY (дажеесли предложение ORDER BY вложено в представление), а предложение FOR UPDATE не было указано

...

В конце добавьте предложение FOR UPDATEвашего SELECT заявления.

...