我的团队使用基于python的wiki服务器调用SQL Server数据库上的存储过程。理想情况下,我们希望从存储过程中返回整数值(1,0,-1)以显示基本结果。
根据2008 thread on Google Groups,pyodbc不支持返回值,因此替代方法是将结果选择为行并检查它。那还是这样吗?是否有(支持和记录)编程方法来检查SQL存储过程的返回值? (如果是,请添加当前参考或示例。)
答案 0 :(得分:6)
我正在使用它:
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),但它是一个不错的解决方法。
答案 1 :(得分:2)
以下是一些相关信息:http://code.google.com/p/pyodbc/wiki/StoredProcedures
听起来仍然不支持返回值,因此您需要使用SELECT
。
答案 2 :(得分:2)
我添加了以下内容以使其在我的应用程序中运行:
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])