是否可以在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
答案 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过程。