gpt4 book ai didi

python - 将列表传递给 PL/SQL 过程

转载 作者:行者123 更新时间:2023-12-01 07:31:04 24 4
gpt4 key购买 nike

有一个类似的question前一段时间。我尝试遵循建议,结果是:

Traceback (most recent call last):
File "<input>", line 1, in <module>
cx_Oracle.DatabaseError: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'TEST_ARRAY'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

这就是我到目前为止所做的。

<强>1。创建新类型

create type list_ids as table of int;

<强>2。创建测试程序

create or replace procedure test_array(ids in list_ids) is
begin
for i in 1..ids.count
loop
dbms_output.PUT_LINE(ids(i));
end loop;
end;

<强>3。运行python脚本

import cx_Oracle


db = cx_Oracle.connect("my_user", "my_password", "<host>:<port>/<sid>")
cursor = db.cursor()

idl = cursor.arrayvar(cx_Oracle.NUMBER, [1,2,3,4])
cursor.callproc("test_array", parameters=[idl])

Traceback (most recent call last):
File "<input>", line 1, in <module>
cx_Oracle.DatabaseError: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'TEST_ARRAY'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

那么我错过了什么?

最佳答案

如上面注释中所述,cursor.arrayvar() 仅适用于 PL/SQL 关联数组,不适用于嵌套表。对于嵌套表,您需要使用“对象”API。这个example展示了如何做到这一点,即使它也恰好用于 PL/SQL 关联数组!

我还调整了 cursor.arrayvar() 的文档,以明确它仅适用于具有连续键的 PL/SQL 关联数组。

关于python - 将列表传递给 PL/SQL 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57197075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com