我的團隊使用基於python的wiki服務器調用SQL Server數據庫上的存儲過程。理想情況下,我們希望從存儲過程返回整數值(1,0,-1)以顯示基本結果。如何使用pyodbc獲取SQL Server存儲過程返回值?
根據2008 thread on Google Groups,pyodbc不支持返回值,因此另一種方法是將結果選擇爲一行並進行檢查。那仍然是這樣嗎?是否有(支持和記錄)編程方式來檢查SQL存儲過程的返回值? (如果是的話,請添加當前引用或例子。)
我的團隊使用基於python的wiki服務器調用SQL Server數據庫上的存儲過程。理想情況下,我們希望從存儲過程返回整數值(1,0,-1)以顯示基本結果。如何使用pyodbc獲取SQL Server存儲過程返回值?
根據2008 thread on Google Groups,pyodbc不支持返回值,因此另一種方法是將結果選擇爲一行並進行檢查。那仍然是這樣嗎?是否有(支持和記錄)編程方式來檢查SQL存儲過程的返回值? (如果是的話,請添加當前引用或例子。)
這裏的一些相關信息:http://code.google.com/p/pyodbc/wiki/StoredProcedures
這聽起來像返回值仍然不支持,所以你需要使用SELECT
。
我使用這個:
def CallStoredProc(conn, procName, *args):
sql = """DECLARE @ret int
EXEC @ret = %s %s
SELECT @ret""" % (procName, ','.join(['?'] * len(args)))
return int(conn.execute(sql, args).fetchone()[0])
它僅適用於SQL Server(或可能的Sybase),但它是一個不錯的解決方法。
添加以下得到它在我的應用程序的工作:
def CallStoredProc(conn, procName, *args):
sql = """SET NOCOUNT ON;
DECLARE @ret int
EXEC @ret = %s %s
SELECT @ret""" % (procName, ','.join(['?'] * len(args)))
return int(conn.execute(sql, args).fetchone()[0])