oracle in-out pl sql包in-python过程调用错误

oracle in-out pl sql包in-python过程调用错误,python,oracle,plsql,cx-oracle,Python,Oracle,Plsql,Cx Oracle,这是pl/sql代码: CREATE OR REPLACE PACKAGE SALES_PHARMA_19.PKG_DIL_ABCD IS TYPE DIL10001_REC IS RECORD ( DILCOLM_01 NUMBER, DILCOLM_02 NUMBER, DILCOLM_03 NUMBER, DILCOLM_04 NUMBER ); TYPE RC_DIL_10001 IS REF CU

这是pl/sql代码:

CREATE OR REPLACE PACKAGE SALES_PHARMA_19.PKG_DIL_ABCD
IS
   TYPE DIL10001_REC IS RECORD
   (
      DILCOLM_01   NUMBER,
      DILCOLM_02   NUMBER,
      DILCOLM_03   NUMBER,
      DILCOLM_04   NUMBER
   );

   TYPE RC_DIL_10001 IS REF CURSOR
      RETURN DIL10001_REC;

   TYPE DIL10001_TAB IS TABLE OF DIL10001_REC
      INDEX BY BINARY_INTEGER;

   PROCEDURE PRC_DIL10001 (P_REF_DIL001   IN OUT RC_DIL_10001,
                           P_PERREQ_BY    IN     NUMBER,
                           P_UD_REQ_BY    IN     VARCHAR2,
                           P_DESIGCODE    IN     VARCHAR2--,
                     --      P_SFRMST_DT  IN     DATE,
                     --      P_SENDTO_DT  IN     DATE
                     );
                          
END;
/
这是程序包的主体:

PROCEDURE PRC_DIL10001 (P_REF_DIL001   IN OUT RC_DIL_10001,
                       P_PERREQ_BY    IN     NUMBER,
                       P_UD_REQ_BY    IN     VARCHAR2,
                       P_DESIGCODE    IN     VARCHAR2--,
                 --      P_SFRMST_DT    IN     DATE,
                 --      P_SENDTO_DT    IN     DATE
                 )
IS
BEGIN
  OPEN P_REF_DIL001 FOR
     SELECT 4 DILCOLM_01,
            2 DILCOLM_02,
            1 DILCOLM_03,
            1 DILCOLM_04
       FROM DUAL;
END;
这是我的Python代码:

def data(request):
userpwd = "__"
connection = cx_Oracle.connect("user", userpwd, "192.168.0.1:1501/orcl")
curs = connection.cursor()
record = curs.arrayvar(cx_Oracle.NUMBER, [1, 2, 3, 4])
t = [0, '1', '2']

k = curs.callproc("PKG_DIL_ABCD.PRC_DIL10001", [record, t])

for i in record.getvalue():
    print(i)
这是给定的错误:


在您的代码中有以下内容:

t = [0, '1', '2']
请注意,第一个元素是整数,其余元素是字符串。它们必须是同一类型的


此外,必须按照中所示处理记录。

回顾:为了完整性,您可以提出“此错误的原因是什么”的问题,但另一方面,这是非常明显的。。。我认为这个Q是可以的。“元素值与前面的元素类型不同”:在代码中是否有一个列表,其中不是所有的值都具有相同的类型?您可以通过添加包体来编辑问题吗?编辑到t=[0,1,2]后,它会给我这个错误:ORA-06550:第1行,第7列:PLS-00306:调用'PRC_DIL10001'时参数的数量或类型错误ORA-06550:第1行,第7列:PL/SQL:语句忽略请参阅答案中的其他信息--记录的处理方式与数组不同。
t = [0, '1', '2']