【问题标题】:Call DB2 stored proc with array parameter using ibm_db_dbi in Python在 Python 中使用 ibm_db_dbi 调用带有数组参数的 DB2 存储过程
【发布时间】:2019-02-01 15:47:44
【问题描述】:

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

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

【问题讨论】:

    标签: python arrays stored-procedures db2


    【解决方案1】:

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

    不知道 JayDeBeApi 模块是否支持。

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

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

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

    【讨论】:

    • 谢谢。您知道是否可以使用 SQLalchemy 和 ibm_db_sa 将 Python 数组传递给 DB2 存储过程?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    相关资源
    最近更新 更多