DB2 iSeries - невозможно получить доступ к таблице из хранимой процедуры

Я обращаюсь к DB2 iSeries версии 6.3 с помощью драйвера JDBC. Вызов хранимой процедуры завершается со следующей ошибкой:

[SQL0204] GENHST in TSTUSR type *FILE not found.

Строка подключения:

jdbc:as400://db2.abc.com/DBName;naming=system;libraries=*LIBL;block size=512;lob threshold=0;package library=QGPL;prompt=false;translate binary=true;remarks=system;cursor hold=false;

Когда я подключаюсь с помощью клиента Squirrel с тем же пользователем и той же строкой подключения, что и для подключения JDBC, я могу просматривать данные в таблице GENHST. Сохраненный процесс ссылается на таблицу GENHST без указания имени схемы.

Пожалуйста, помогите с любыми идеями. Что может пойти не так?

РЕДАКТИРОВАТЬ:

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

jdbc:as400://db2.abc.com/;naming=system;libraries=*LIBL,PROC_SHEMA;block size=512;lob threshold=0;package library=QGPL;prompt=false;translate binary=true;remarks=system;cursor hold=false;

Я не очень понимаю, что происходит.


person pawinder gupta    schedule 25.06.2020    source источник


Ответы (1)


Это описано в документации в строке 4. Схема SQL по умолчанию, указанная в URL-адресе, и указанное свойство библиотеки

Схема SQL по умолчанию — это то, что указано в URL-адресе. Список библиотек не просматривается для разрешения неполного имени в операторах SQL.

person nfgl    schedule 25.06.2020
comment
Я сомневаюсь, что если я могу запросить таблицу из SQL-клиента Squirrel, почему хранимая процедура не может ее найти. - person pawinder gupta; 26.06.2020
comment
@pawindergupta SP не может найти его, потому что место (схема по умолчанию или список библиотек), где выполняется поиск таблицы, определяется как время создания процедуры, а не время выполнения - person nfgl; 26.06.2020