Python 和 CX_Oracle 无效 SQL 语句
Python and CX_Oracle Invalid SQL Statement
我正在编写一个 Python 脚本来从 Oracle 中获取一些值,但是在中间我必须为一个包设置一个 ID,以便它可以用我想要的数据创建相应的视图。
我正在尝试执行:
ora_query = cursor.execute("EXECUTE VW_WEEKLY_CALL_LOG_PKG.SET_COMPANY_ID(P_COMPANY_ID => '1111111111')")
它returns我:
cx_Oracle.DatabaseError: ORA-00900: invalid SQL statement
在 SQL Developer 中,我可以使用这个执行语句,它会给我结果。我使用的 cursor.execute 错了吗?
这是包裹:
create or replace package VW_WEEKLY_CALL_LOG_PKG as
procedure SET_COMPANY_ID(P_COMPANY_ID VARCHAR2);
function GET_COMPANY_ID
return VARCHAR2;
end VW_WEEKLY_CALL_LOG_PKG;
这是包体:
create or replace package body VW_WEEKLY_CALL_LOG_PKG as
G_COMPANY_ID VARCHAR2(255);
procedure SET_COMPANY_ID(P_COMPANY_ID VARCHAR2) as
begin
G_COMPANY_ID := P_COMPANY_ID;
end;
function GET_COMPANY_ID
return VARCHAR2 is
begin
return G_COMPANY_ID;
end;
end VW_WEEKLY_CALL_LOG_PKG;
您提供的声明不是有效的 SQL 声明。这是一个 SQL*Plus 命令。你想做这样的事情:
company_id = '1111111111'
cursor.callproc('VW_WEEKLY_CALL_LOG_PKG.SET_COMPANY_ID', [company_id])
我正在编写一个 Python 脚本来从 Oracle 中获取一些值,但是在中间我必须为一个包设置一个 ID,以便它可以用我想要的数据创建相应的视图。
我正在尝试执行:
ora_query = cursor.execute("EXECUTE VW_WEEKLY_CALL_LOG_PKG.SET_COMPANY_ID(P_COMPANY_ID => '1111111111')")
它returns我:
cx_Oracle.DatabaseError: ORA-00900: invalid SQL statement
在 SQL Developer 中,我可以使用这个执行语句,它会给我结果。我使用的 cursor.execute 错了吗?
这是包裹:
create or replace package VW_WEEKLY_CALL_LOG_PKG as
procedure SET_COMPANY_ID(P_COMPANY_ID VARCHAR2);
function GET_COMPANY_ID
return VARCHAR2;
end VW_WEEKLY_CALL_LOG_PKG;
这是包体:
create or replace package body VW_WEEKLY_CALL_LOG_PKG as
G_COMPANY_ID VARCHAR2(255);
procedure SET_COMPANY_ID(P_COMPANY_ID VARCHAR2) as
begin
G_COMPANY_ID := P_COMPANY_ID;
end;
function GET_COMPANY_ID
return VARCHAR2 is
begin
return G_COMPANY_ID;
end;
end VW_WEEKLY_CALL_LOG_PKG;
您提供的声明不是有效的 SQL 声明。这是一个 SQL*Plus 命令。你想做这样的事情:
company_id = '1111111111'
cursor.callproc('VW_WEEKLY_CALL_LOG_PKG.SET_COMPANY_ID', [company_id])