cx_Oracle を使用して Oracle でユーザー定義型を操作する簡単な方法を知っている人はいますか?
たとえば、次の 2 つのタイプがあるとします。
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 コードに頼らずに呼び出す方法がわかりません。
編集: 申し訳ありませんが、PL/SQL の代わりに Python コードでより多くのことを行う方法を探していたと言うべきでした。