调用输入为用户定义数据类型的存储过程-使用Python



这是Oracle PLSQL代码:

create or replace TYPE EMP_TYP IS OBJECT (
EMP_ID VARCHAR2(36), EMP_NAM  VARCHAR2(50)
)
--
create or replace TYPE EMP_TAB IS TABLE OF EMP_TYP
--
create or replace PACKAGE BODY EMP_NEW_PKG
IS PROCEDURE EMP_INSERT_PROC (new_record     EMP_TAB) IS
BEGIN
INSERT INTO EMPLOYEE_MAIN_TABLE ( EMP_ID, EMP_NAM ) 
SELECT EMP_ID, EMP_NAM FROM TABLE ( new_record ) ;
COMMIT;
END;

如何使用Python调用此存储过程?

我试过Python Code,

args = [ '12345' , 'Rajan']
cursor.callproc('EMP_NEW_PKG.EMP_INSERT_PROC', args)
Getting Error as :
PLS-00306 : wrong number or types of argument in call EMP_NEW_PKG.EMP_INSERT_PROC.

请提供代码片段/相关参考。

必须创建一个数据库对象并将其传递给存储过程。像这样(未经测试):

emp_type_obj = connection.gettype("EMP_TYP")
emp_obj = emp_type_obj.newobject()
emp_obj.EMP_ID = "12345"
emp_obj.EMP_NAM = "Rajan"
emp_tab_type_obj = connection.gettype("EMP_TAB")
emp_tab_obj = emp_tab_type_obj.newobject()
emp_tab_obj.append(emp_obj)
cursor.callproc("EMP_NEW_PKG.EMP_INSERT_PROC", [emp_tab_obj])

最新更新