DB2 и хранимая процедура - Как восстановить параметры связывания? - PullRequest
0 голосов
/ 28 июня 2019

Я пишу хранимую процедуру (SQL / PL - DB2 V11 или новее), и мне нужно получить доступ к SYSIBM.SYSCOLUMNS, чтобы получить столбцы таблицы 'HELLO_WORLD'.

В SYSIBM.SYSCOLUMNSтаблица 'HELLO_WORLD' присутствует с другим TBCREATOR.

TBCREATOR |  TBNAME      | NAME
OWN_SV    |  HELLO_WORD  | COLN1
OWN_SV    |  HELLO_WORD  | COLN2
OWN_SV    |  HELLO_WORD  | COLN3
OWN_CL    |  HELLO_WORD  | COLN1
OWN_CL    |  HELLO_WORD  | COLN2
OWN_CL    |  HELLO_WORD  | COLNA

Я не буду использовать инструкцию DISTINCT, потому что столбцы могут отличаться.Я думал, что буду использовать значение в специальном регистре CURRENT_SCHEMA, но, к сожалению, это не правильно.

Пример:

 SELECT C.NAME, C.COLNO
 FROM SYSIBM.SYSCOLUMNS C
 WHERE C.TBCREATOR = CURRENT_SCHEMA
 AND C.TBNAME = 'HELLO_WORLD'
 ORDER OF C.COLNO

Значение, присутствующее в CURRENT_SCHEMA, неверно: если хранимая процедура вызываетсядругой процесс (например, процесс COBOL) CURRENT_SCHEMA связан с процессом, который подтвердил вызов.

Процесс, который вызывает мою хранимую процедуру "settings" CURRENT_SCHEMA со значением "USERBTC" (который является пользователем, которыйвыполнил процесс COBOL через JCL)

Мой OWNER / TBCREATOR - "OWN_CL", и это значение указано в параметрах связывания (точнее, в параметре "QUALIFIER")

Чтобы быть уверенным вчтобы правильно составить таблицу, я должен использовать КВАЛИФЕР (ИЛИ ВЛАДЕЛЕЦ), указанный в опциях BIND.

Возможно?Есть ли у вас какие-либо предложения?

...