gpt4 book ai didi

python - 从 python 脚本使用游标输出参数调用 oracle 存储过程

转载 作者:行者123 更新时间:2023-11-28 18:46:43 25 4
gpt4 key购买 nike

我正在尝试从 python 脚本调用带有 2 个输入和 1 个输出参数的 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/passwd@db_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 <cx_Oracle.Connection to login@db_name>>

我做错了什么?

谢谢。

最佳答案

我刚刚遇到了类似的问题。 cur_var类型为 <type 'cx_Oracle.CURSOR'>cur_var.getvalue()获取 <type 'OracleCursor'> 类型的对象.要获取数据,您必须从 OracleCursor 对象中获取它们。尝试例如:

print cur_var.getvalue().fetchall()

要查看 OracleCursor 对象的更多功能,只需查看其目录:

dir(cur_var.getvalue())

希望对您有所帮助!

关于python - 从 python 脚本使用游标输出参数调用 oracle 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19095690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com