gpt4 book ai didi

python - 在 Python 中使用 Oracle 存储过程命名参数

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:10 26 4
gpt4 key购买 nike

尝试调用现有存储过程,但使用命名参数,第一个参数应保留默认值(在本例中为 NULL)。

我花了太长时间试图让它工作,有什么想法吗?

create or replace procedure so_test(p1 in varchar2 default null, p2 in     varchar2  default null, p3 in varchar2  default null) as
begin
null;
end;

import cx_Oracle
db = cx_Oracle.connect('/@XTS_DEV.CLIENT')
cur = db.cursor()
cur.callproc("so_test", ('X', 'Y', 'Z'))
cur.callproc("so_test(p2=>:1, p3=>:2)", ('Y', 'Z'))

Traceback (most recent call last):
File "C:\Users\PatrickJolliffe\so_test.py", line 5, in <module>
cur.callproc("so_test(p2=>:1, p3=>:2)", ('Y', 'Z'))
cx_Oracle.DatabaseError: ORA-06550: line 1, column 7:
PLS-00801: internal error [22503]
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

最佳答案

文档 ( http://cx-oracle.readthedocs.io/en/latest/cursor.html#Cursor.callproc ) 涵盖了这一点,但由于那里没有提供示例,我可以看出这可能会让人感到困惑。 :-)

对于您的示例,这就是您想要的:

cursor.callproc("so_test", keywordParameters = dict(p2 = "Y", p3 = "Z"))

关于python - 在 Python 中使用 Oracle 存储过程命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40586019/

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