我想用python脚本中的2 in和1 out参数调用oracle存储过程。我遇到的问题是传递一个光标出参数。用python脚本的游标输出参数调用oracle存储过程
的Oracle存储过程基本上是:
PROCEDURE ci_lac_state
(LAC_ID_IN IN VARCHAR2,
CI_ID_IN IN VARCHAR2 DEFAULT NULL,
CGI_ID OUT SYS_REFCURSOR)
AS
BEGIN
OPEN cgi_id FOR
...
END;
的Python代码调用的数据库是:
#! /usr/bin/python
import cx_Oracle
lac='11508'
ci='9312'
try:
my_connection=cx_Oracle.Connection('login/[email protected]_name')
except cx_Oracle.DatabaseError,info:
print "Logon Error:",info
sys.exit()
my_cursor=my_connection.cursor()
cur_var=my_cursor.var(cx_Oracle.CURSOR)
my_cursor.callproc("cgi_info.ci_lac_state", [lac, ci, cur_var])
print cur_var.getvalue()
我得到这样的光标值作为结果:
<__builtin__.oraclecursor on to>>
我在做什么错?
谢谢。
+0
你试过'print cur_var.getvalue(pos = 0)'?或者可能pos = 2,如果你需要检索cur_var,这是CGI_ID –
2013-09-30 13:54:00
+0
可能的重复[Python-Oracle传入一个光标输出参数](http://stackoverflow.com/questions/6821372/python-oracle-passing-in -a-cursor-out-parameter) –
+0
To FoxMaSk。是。我试图做到这一点“打印cur_var.getvalue(pos = 0)”,但我得到了相同的结果“>上的OracleCursor”。 “pos = 2”导致新的错误:print cur_var.getvalue(pos = 1) IndexError:Variable_GetSingleValue:超出数组大小 –