Вызовите хранимый процесс DB2 с параметром массива, используя ibm_db_dbi в Python - PullRequest
0 голосов
/ 01 февраля 2019

Можно ли вызвать хранимый процесс с ibm_db или ibm_db_dbi в python и передать переменные массива в качестве параметров?

arr1 = ['a','b','c']
arr2 = ['x','y','z']

test = curDB2.callproc('subsystem.PYTHON_ARRAY_TEST',(arr1,arr2))

Вот ошибка, которую я получаю:

DatabaseError: ibm_db_dbi::DatabaseError: Describe Param Failed: [IBM][CLI 
Driver] CLI0150E  Driver not capable. SQLSTATE=HYC00 SQLCODE=-99999

Я использую версию драйвера 10.01.200.238

1 Ответ

0 голосов
/ 05 февраля 2019

Модули ibm_db, ibm_db_dbi в текущих версиях (2.0.9) не поддерживают передачу массивов Python в хранимые процедуры SQLPL.

Не знаю, поддерживает ли его модуль JayDeBeApi.

Вам нужно будет либо сериализовать массив, либо передать отдельные элементы как отдельные параметры.

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

Если вы разбираетесь в программировании на языке C, IBM делает исходный код для ibm_db / ibm_db_dbi доступным на github, и вы можете расширить его для поддержки передачи типизированных массивов из Python в процедуры SQLPL.

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