在Python中使用ibm_db_dbi使用数组参数调用DB2存储的proc

时间:2019-02-01 15:47:44

标签: python arrays stored-procedures db2

是否可以在python中使用ibm_db或ibm_db_dbi调用存储的proc并将数组变量作为参数传递?

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 :(得分:0)

当前版本(2.0.9)的ibm_db,ibm_db_dbi模块不支持将Python数组传递给SQLPL存储过程。

也不知道JayDeBeApi模块是否也支持它。

您将需要序列化数组或将各个元素作为单独的参数传递。

请注意,普通的Python动态数组并不局限于每个元素的特定类型(尽管您可以使用array模块来约束元素的类型),但是SQLPL数组仅限于单个类型。

如果您精通'C'语言编程,IBM会在github上提供ibm_db / ibm_db_dbi的源代码,您可以对其进行扩展以支持将类型数组从Python传递到SQLPL过程。