【发布时间】:2018-11-04 00:40:15
【问题描述】:
我在 Oracle 中有 2 个用户定义的数据类型,用于存储过程的输出。如何使用 SQLALCHEMY 调用此过程并打印输出?我尝试创建一个 types.UserDefinedType 子类并与之绑定结果参数,但我不断收到错误消息,提示 cx_oracle 不支持此类型
Create or replace TYPE type1 as Object (
param1 NUMBER(15,0),
param2 clob);
/
create or replace TYPE t_type1 as TABLE OF type1;
/
create or replace PROCEDURE "DO_SOMETHING" (
results OUT t_type1,
status OUT CHAR,
status_msg OUT VARCHAR2)
下面是我试图用来调用以上存储过程的代码。如果存储的 proc 是 oracle 中用户定义的数据类型,我如何绑定婴儿车?
connection = engine.connect()
try:
proc_query = text(
"begin DO_SOMETHING(:results,:status, :status_msg); end;",
bindparams=[outparam('results', <WHAT TO PUT HERE>, outparam('status', CHAR),
outparam('status_msg', VARCHAR)])
result = connection.execute(proc_query)
status_code = result.out_parameters['results'].strip()
err_nbr = result.out_parameters['status']
err_msg = result.out_parameters['status_msg'].strip()
except Exception as e:
logging.exception(e)
print("Error occured in refresh_view" ,e)
raise e
finally:
connection.close()
【问题讨论】:
标签: sql oracle sqlalchemy