我正在尝试获取 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 存储过程中获取返回值?