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