我正在尝试获取 Sybase 用户定义的存储过程返回的值,以下是代码片段。
从 com.ziclix.python.sql 导入 zxJDBC
def callStoredProc(conn, procName, *args):
conn.execute("使用数据库")
sql = """声明@ret int
执行@ret = %s %s
SELECT @ret""" % (procName, ','.join(['?'] * len(args)))
返回 int(conn.execute(sql, args).fetchone()[0])
jdbc_url = "jdbc:sybase:Tds:192.168.1.100:3397/stagingdb"
用户名 = "sa"
密码 = ""
驱动程序=“com.sybase.jdbc4.jdbc.SybDriver”
conn = zxJDBC.connect(jdbc_url, 用户名, 密码, 驱动)
光标 = conn.cursor()
打印 callStoredProc(光标,“usp_find”,“苹果”)
但是当我运行脚本时,它会说;
zxJDBC.Error:存储过程“usp_find”只能在非链式事务模式下运行。'SET CHAINED OFF' 命令将导致当前会话使用非链式事务模式。[SQLCode: 7713], [SQLState: ZZZZZ]
conn.execute("SET CHAINED OFF")但是,如果我添加callStoredProc()它返回None。
有没有办法从 Jython/Python 中的 sybase 存储过程中获取返回值?