在Python中调用Oracle存储过程时获取错误“不支持类型dict的值”

3lxsmp7m  于 2023-04-11  发布在  Oracle
关注(0)|答案(2)|浏览(262)

当使用cx_oracle调用Oracle存储过程时,我得到以下错误Python value of type dict not supported。
我的代码如下-

try:
    cursor = connection.cursor()
    cursor.callproc("my_proc", [fname, hash, json])
    cursor.close()
    connection.commit()
finally:
    connection.close()

在我的存储过程中,我传入了两个字符串(Oracle中的varchar 2)和JSON数据,这些数据在Oracle中位于Clob中。
请注意,我是Python的新手,仍然在掌握它。

pw136qt2

pw136qt21#

试试这个:

try:
cursor = connection.cursor()
cursor.callproc("my_proc", json.dumps([fname, hash, json]))
cursor.close()
connection.commit()

finally:connection.close()

ecr0jaav

ecr0jaav2#

这似乎对我很有效。如果你更新你的问题,提供更多细节,我们也许能发现你的问题

cursor = connection.cursor()
cursor.execute("""
               create or replace procedure my_proc (
                   p1 in varchar2,
                   p2 in varchar2,
                   p3 in clob,
                   p4 out varchar2
               ) as
               begin
                 p4 := p1 || p2 || p3;
               end;
               """)

hash = "abc"
fname = "def"
json = "ghi"
with connection.cursor() as cursor:
    myout = cursor.var(cx_Oracle.STRING)
    cursor.callproc("my_proc", [fname, hash, json, myout])
    print(myout.getvalue())

输出为:

defabcghi

相关问题