从 Python 发送 Table 类型到存储过程
Sending Table Type To Stored Procedure From Python
我正在将 Table 类型发送到存储过程。以下是声明的类型。
CREATE TYPE two_attr_ot AS OBJECT (
ssn NUMBER,
fname VARCHAR2(100)
);
CREATE TYPE two_attr_tt IS TABLE OF two_attr_ot;
程序
PROCEDURE set_emp_details(
IN_save_data IN two_attr_tt
)
我正在使用 cx_Oracle 从 python 调用此过程。 conn 是连接对象。
tab = conn.gettype('two_attr_tt')
obj = conn.gettype('TWO_ATTR_OT')
new_obj = obj.newobject()
new_obj.SSN = 1111
new_obj.FNAME = 'John'
tab.append(new_obj)
conn.cursor().callproc('procname', [tab])
这执行得很好。但是我想使用动态键将属性动态设置为 new_obj 。像 new_obj[key] = val.
我怎样才能做到这一点。
您可以尝试 setattr(object, name, value)。
setattr(new_obj, 'SSN', 1111)
setattr(new_obj, 'FNAME', 'John')
我正在将 Table 类型发送到存储过程。以下是声明的类型。
CREATE TYPE two_attr_ot AS OBJECT (
ssn NUMBER,
fname VARCHAR2(100)
);
CREATE TYPE two_attr_tt IS TABLE OF two_attr_ot;
程序
PROCEDURE set_emp_details(
IN_save_data IN two_attr_tt
)
我正在使用 cx_Oracle 从 python 调用此过程。 conn 是连接对象。
tab = conn.gettype('two_attr_tt')
obj = conn.gettype('TWO_ATTR_OT')
new_obj = obj.newobject()
new_obj.SSN = 1111
new_obj.FNAME = 'John'
tab.append(new_obj)
conn.cursor().callproc('procname', [tab])
这执行得很好。但是我想使用动态键将属性动态设置为 new_obj 。像 new_obj[key] = val.
我怎样才能做到这一点。
您可以尝试 setattr(object, name, value)。
setattr(new_obj, 'SSN', 1111)
setattr(new_obj, 'FNAME', 'John')