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])