db2 SQLCODE = -243, SQLSTATE = 36001 ОШИБКА - PullRequest
       7

db2 SQLCODE = -243, SQLSTATE = 36001 ОШИБКА

0 голосов
/ 20 сентября 2011

Я использую DB2Driver в своем коде, как

Class.forName("com.ibm.db2.jcc.DB2Driver");

и я получаю набор результатов в своем коде Java, который чувствителен к прокрутке. мой sql запрос выглядит так select distinct day , month , year from XXX. здесь таблица XXX доступна только для пользователя, которого я использую ... поэтому она выдает следующую ошибку

com.ibm.db2.jcc.a.SqlException: DB2 SQL Error: SQLCODE=-243, SQLSTATE=36001, SQLERRMC=SQL_CURSH200C3, DRIVER=3.51.90 .. Я знаю, что это проблема только для чтения ... но когда я пытаюсь выполнить тот же запрос в центре управления db2, он работает

пожалуйста, помогите мне в этом

1 Ответ

1 голос
/ 20 сентября 2011

PubLib ваш друг: -)

SQL0243N
SENSITIVE курсор <имя-курсора> не может быть определен для указанного оператора SELECT.

Пояснение:

Курсор <имя-курсора> определен как SENSITIVE, но для содержимого оператора SELECT требуется, чтобы DB2 создала временную таблицу результатов курсора, и DB2 не может гарантировать, что изменения, сделанные вне этого курсора, будут видны. Эта ситуация возникает, когда содержимое запроса делает таблицу результатов доступной только для чтения. Например, если запрос включает соединение, таблица результатов доступна только для чтения. В этих случаях курсор должен быть определен как НЕДОСТАТОЧНЫЙ или АСЕНСИВНЫЙ.

Выписка не может быть обработана.

Ответ пользователя:

Либо измените содержимое запроса, чтобы получить таблицу результатов, которая не доступна только для чтения, либо измените тип курсора на НЕДОСТАТОЧНЫЙ или АСЕНСИВНЫЙ.

Если вы не можете изменить тип курсора, обратите внимание на использование материализованных таблиц запросов. Они похожи на представления, но также предоставляют временное резервное хранилище для данных, поэтому они не доступны только для чтения по типу запроса.

Поможет ли это в ситуациях, когда вы заставляете пользователя только для чтения, я не совсем уверен, но вы можете иметь различные разрешения на материализованные данные и реальные данные ( к сожалению, я не проделал большую работу с ними, конечно, ни один, где разрешения были заблокированы до уровня только для чтения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...