有谁知道使用 cx_Oracle 在 Oracle 中使用用户定义类型的更简单方法?
例如,如果我有这两种类型:
CREATE type my_type as object(
component varchar2(30)
,key varchar2(100)
,value varchar2(4000))
/
CREATE type my_type_tab as table of my_type
/
然后打包过程my_package
如下:
PROCEDURE my_procedure (param in my_type_tab);
要在 PL/SQL 中执行该过程,我可以执行以下操作:
declare
l_parms my_type_tab;
l_cnt pls_integer;
begin
l_parms := my_type_tab();
l_parms.extend;
l_cnt := l_parms.count;
l_parms(l_cnt) := my_type('foo','bar','hello');
l_parms.extend;
l_cnt := l_parms.count;
l_parms(l_cnt) := my_type('faz','baz','world');
my_package.my_procedure(l_parms);
end;
但是,我想知道如何在 Python 中做到这一点,类似于以下代码:
import cx_Oracle
orcl = cx_Oracle.connect('foo:bar@mydb.com:5555/blah' + instance)
curs = orcl.cursor()
params = ???
curs.execute('begin my_package.my_procedure(:params)', params=params)
如果参数是一个字符串,我可以像上面那样做,但由于它是一个用户定义的类型,我不知道如何在不求助于纯 PL/SQL 代码的情况下调用它。
编辑:对不起,我应该说我正在寻找在 Python 代码而不是 PL/SQL 中做更多事情的方法。