我正在尝试执行PL/SQL脚本,该脚本在运行时构造,但得到
cx_Oracle.DatabaseError: ORA-00922: missing or invalid option
看起来像一些格式问题的脚本,因为它是显示为字符串,但仍然不知道如何解决它。
下面是我正在尝试的代码:
script = '''Set serveroutput on;
DECLARE
V_req pls_integer;
BEGIN
V_req := infomediary_nse.request(
p_inApp_id => 100,
p_inPayload => XMLTYPE(
'<tag>hello</tag>'
)
);
END;
/'''
dbconnection = cx_Oracle.connect(ConnectionString)
str, err = dbconnection.cursor().execute(script)
2条答案
按热度按时间iqxoj9l91#
不是PL/SQL命令,而是SQLPlus命令,因此只能在SQLPlus中使用。
甚至最后的
/
也应该删除,因为它也是SQL*Plus特定的。这应该可以工作:
如果您使用
set serveroutput on
从DBMS_OUTPUT
调用中获取结果,则可以查看this。例如:
给出:
bejyjqdl2#
我在从python执行存储过程时也遇到了同样的错误,通过在最后删除
/
,在python中修复了这个问题。错误消息
cx_Oracle.DatabaseError: ORA-00922: missing or invalid option
表示Oracle数据库无法理解您尝试执行的PL/SQL语句。这种情况可能有多种原因,包括:要修复此错误,您需要检查PL/SQL语句是否存在任何语法错误。您还需要确保PL/SQL语句使用的是您正在使用的Oracle数据库版本所支持的功能。最后,您需要确保PL/SQL语句正在尝试访问确实存在的表或其他对象。
以下是解决此错误的一些提示: