【发布时间】:2021-11-01 18:20:17
【问题描述】:
我想在 Python 中执行一个 Oracle 过程。 SQL 端的过程写得很好。在 Python 代码中,它收到错误: ORA-06550 和 PLS-00306 - 数据库错误。
con = cx_Oracle.connect('***********')
cur = con.cursor()
faktura= "QQ0009365/21"
numer_listu = "421435636356536"
kod_k = int(112377)
out_data=str()
t = cur.callproc('QQ.ECOMMERCE.ZMIANA_OPISU_LIST_PRZEWOZOWY',[numer_listu,kod_k,faktura,out_data])
SQL Oracle 函数如下所示:
QQ.ECOMMERCE.ZMIANA_OPISU_LIST_PRZEWOZOWY(P_NUMER_LISTU => :P_NUMER_LISTU,
P_KOD_KURIERA => :P_KOD_KURIERA,
P_NUMER_FAKTURY => :P_NUMER_FAKTURY,
P_ERROR_INFO => :P_ERROR_INFO);
【问题讨论】:
-
过程中的这些参数是否是输出参数?? ,比如
p_error_info -
是的,P_ERROR_INFO是OUT参数VARCHAR
-
字符串参数不应使用单引号,而应使用双引号,例如此处的一些示例 --> blogs.oracle.com/oraclemagazine/… 。我猜你有一个变量来获得输出,对吧?我一直对使用 callproc 传递给 Oracle PL 中的 varchar2 变量的字符串使用单引号。
-
P_ERROR_INFO 它是 VARCHAR2
标签: python oracle plsql cx-oracle