【发布时间】:2017-06-02 18:23:33
【问题描述】:
我在 oracle (lro_dummy) 中有一个自定义类型。我也有程序。我看起来像这样:
procedure dummyLro
(
i_dummy in lro_dummy,
o_dummy out lro_dummy
)is
begin
o_dummy := lro_dummy('asdf');
end dummyLro;
现在我想用 cx_Oracle 从 python 调用这个过程。这看起来像这样:
def test(db_con):
cur = db_con.cursor()
try:
procedure_params = {}
procedure_params["i_dummy"] = cur.var(cx_Oracle.OBJECT, typename="lro_dummy")
procedure_params["o_dummy"] = cur.var(cx_Oracle.OBJECT, typename="lro_dummy")
cur.callproc("test.dummyLro", [], procedure_params)
在那之后o_dummy 有一个值,因为
str(procedures_params["o_dummy"])
返回
'<cx_Oracle.OBJECT with value <cx_Oracle.Object ???.LRO_DUMMY at 0x10492c9c0>>'
但我无法访问我的属性。属性列在
procedure_params["o_dummy"].type.attributes
但是我在里面找不到值
procedure_params["o_dummy"]
我做错了什么?
我正在使用Python 3.6、cx_Oracle 5.3、InstantClient 11.2、Oracle-Server 11
【问题讨论】:
-
procedure_params["o_dummy"].type.attributes 中列出的属性有哪些?
-
它返回一个包含一个项目的
cx_Oracle.ObjectAttribute DUMMY数组。属性name的值为DUMMY -
所以你应该可以通过procedure_params["o_dummy"].DUMMY?
-
我知道它应该像这样工作。但我没有名为
DUMMY的属性。我拥有的唯一属性是bufferSize、inconverter、numElements、outconverter、size和type。它仅适用于特殊的 oracle 数据库吗?我的类型(lro_dummy)不正确吗? -
即使我尝试使用
db_con.gettype("lro_dummy").newobject()创建lro_dummy的新对象,我得到的唯一属性是type
标签: python oracle cx-oracle object-type instantclient