Свойство currentFunctionPath не работает для моей хранимой процедуры из Java

#db2 #db2-zos

#db2 #db2-zos

Вопрос:

Я вызываю хранимую процедуру, которая создана в DB2 для Z / OS из Java.

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

Я не использую schema name для всех других SQLL, задав currentSchema свойство datasource.

Я узнал, что для хранимой процедуры я должен установить currentFunctionPath свойство. Но это не работает. Я получаю исключение ниже:

 Caused by: com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-805, SQLSTATE=51002, SQLERRMC=DB2T.MYSCHEMA.SYSSTAT.5359534C564C3031;DISTSERV;04, DRIVER=4.24.92
  

Драйвер Db2, который я использовал: compile(&roup: 'com.ibm.db2.jcc', name: 'db2jcc4', version: '4.24.92')
Версия DB2: 12

Кто-нибудь знает, это известная проблема или я что-то пропустил?

Ответ №1:

Имейте в виду разницу между специальными регистрами (такими как путь к текущей функции) и свойствами подключения / сеанса jdbc.

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

Специальным регистром является «CURRENT_PATH», а синтаксис определен здесь.

Пример фрагмента строки подключения:

;specialRe&isters=CURRENT_PATH=CURRENT CLIENT_USERID=x,SYSIBM;

где x — это схема, которая содержит ваш sproc.

Вы можете установить значение специальных регистров в соответствии с вашими потребностями, тщательно протестируйте его со всеми вашими обычными вызовами, особенно если у вас настроена мультисхема.

Вы также можете установить специальные регистры после подключения к базе данных, при условии сохранения синтаксиса, хотя в этом случае это ограничивает вас установкой одного значения для каждого специального регистра за раз, если вы не используете DB2DataSource.setSpecialRe&isters интерфейс. Обратитесь к ссылке выше для получения подробной информации.

Комментарии:

1. Строка подключения создается внутри пользовательской платформы. Для этого требуются изменения в этой пользовательской библиотеке. Но у нас есть возможность установить свойства источника данных. Вот почему я ищу свойство datasource way. Кстати, почему currentFunctionPath не работает?

2. Следуйте инструкциям по ссылке в ответе. Специальные регистры обрабатываются отдельно от обычных свойств.

3. В вашей ссылке говорится о подключении Drivermana&er. Мой вопрос в том, почему свойство currentFunctionPath не работает для моего источника данных ibm.com/support/producthub/db2/docs/content/SSEPGG_11.5.0 /…

4. Возможно, потому, что это свойство относится к специальным регистрам Db2-LUW, но не Db2-for-Z / OS.

5. Сработал currentFunctionPath !!! .. Он не был настроен должным образом из-за моей пользовательской платформы