【发布时间】:2021-04-04 11:54:09
【问题描述】:
这是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)
这是给定的错误:
NotSupportedError at /data/ element 1 value is not the same type as previous elements Request Method: GET Request URL: http://127.0.0.1:8000/data/ Django Version: 3.1.3 Exception Type: NotSupportedError Exception Value: element 1 value is not the same type as previous elements Exception Location: D:\s h o w n o k\Practice_Project\oracle_api\o_api\myapp\views.py, line 31, in data Python Executable: C:\Users\ATI\AppData\Local\Programs\Python\Python37-32\python.exe Python Version: 3.7.2
【问题讨论】:
-
审查:为了完整起见,您可以提出“这个错误的原因是什么”的问题,但另一方面,这很明显......我认为这个 Q 是可以的。
-
“元素值与先前元素的类型不同”:您的代码中是否有一个列表,其中并非所有值都具有相同的类型?
-
你能通过添加包的正文来编辑问题吗..?
标签: python oracle plsql cx-oracle