【发布时间】:2010-11-01 13:23:03
【问题描述】:
有谁知道在 Oracle 中使用 cx_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 中做更多事情的方法。
【问题讨论】: