0
我试图获取由Sybase用户定义的存储过程返回的值,以下是代码片段。Jython ziclix JDBC,获取存储过程返回值 - 链接事务模式
from com.ziclix.python.sql import zxJDBC def callStoredProc(conn, procName, *args): conn.execute("USE DB") sql = """DECLARE @ret int EXEC @ret = %s %s SELECT @ret""" % (procName, ','.join(['?'] * len(args))) return int(conn.execute(sql, args).fetchone()[0]) jdbc_url = "jdbc:sybase:Tds:192.168.1.100:3397/stagingdb" username = "sa" password = "" driver = "com.sybase.jdbc4.jdbc.SybDriver" conn = zxJDBC.connect(jdbc_url, username, password, driver) cursor = conn.cursor() print callStoredProc(cursor, "usp_find", "Apples")
但是当我运行脚本时,它说;
zxJDBC.Error: Stored procedure 'usp_find' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode. [SQLCode: 7713], [SQLState: ZZZZZ]
但是,如果我在callStoredProc()
添加conn.execute("SET CHAINED OFF")
它返回None
。
有没有办法在Jython/Python中从sybase存储过程中获取返回值?
感谢您的提示,它的工作。我只想为像我这样的新手添加更多的线条; 从java.sql中导入的DriverManager 进口java.sql.Types中作为类型 分贝=的DriverManager.getConnection( “JDBC:SYBASE:TDS:192.168.1.100:3397 /的StagingDB”, “SA”, “”) 然后几乎所有的线路。 正确的语法将取决于如何编写用户定义的存储过程,在这方面我必须模拟一些实际问题,sp_helptext也有帮助。 – r0ash