Кто-нибудь знает, как проще работать с определенными пользователем типами в Oracle с помощью cx_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, simila г к этому коду:
import cx_Oracle
orcl = cx_Oracle.connect('foo:[email protected]:5555/blah' + instance)
curs = orcl.cursor()
params = ???
curs.execute('begin my_package.my_procedure(:params)', params=params)
Если параметр был строкой я могу сделать это, как указано выше, но так как это пользователь определенный тип, я понятия не имею, как это назвать, не прибегая к чистому PL/код SQL ,
Редактировать: Извините, мне следовало сказать, что я искал способы сделать больше в коде Python вместо PL/SQL.