Как избежать схемы жесткого кодирования в хранимой процедуре DB2 / 400 - PullRequest
0 голосов
/ 06 сентября 2018

Я создаю хранимые процедуры для замены устаревших программных приложений для IBM i. Я вызываю хранимую процедуру из Java Web App. Я использую JDBC-драйвер jt400

Мой JDBC URL-адрес jdbc:as400://myhost/;libraries=*LIBL,MYLIB;prompt=false

Хранимые процедуры могут вызывать хранимые процедуры

Первоначальный вызов хранимой процедуры завершается нормально, если он не выполняет дальнейшие вызовы хранимой процедуры

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

com.ibm.as400.access.AS400JDBCSQLSyntaxErrorException: [SQL0204] MY_SP in MYLIB type *N not found.

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

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

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

У меня действительно была такая же проблема, хранимая процедура использует ваш список библиотек описания заданий. Вам нужно отредактировать, что вы можете использовать TAATOOL CHGLBLJOBD. В данный момент я не нахожусь перед iSeries, но я считаю, что команда была либо EDTJOBDLIB, либо EDTJOBDLIBL WRKJOBDLIBL. Это некоторая вариация этого.

0 голосов
/ 06 сентября 2018

Вам нужно SET PATH = "MYLIB"

Когда я использую SQuirreL для вызова хранимой процедуры, мне нужно использовать оператор SET PATH, чтобы получить ее для поиска хранимой процедуры. Я не знаю, так ли это из-за того, что мой список библиотек неверен или как, но текущая схема не используется для поиска неквалифицированной хранимой процедуры.

...