2012-03-28 84 views
4

我的团队使用基于python的wiki服务器调用SQL Server数据库上的存储过程。理想情况下,我们希望从存储过程返回整数值(1,0,-1)以显示基本结果。如何使用pyodbc获取SQL Server存储过程返回值?

根据2008 thread on Google Groups,pyodbc不支持返回值,因此另一种方法是将结果选择为一行并进行检查。那仍然是这样吗?是否有(支持和记录)编程方式来检查SQL存储过程的返回值? (如果是的话,请添加当前引用或例子。)

回答

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),但它是一个不错的解决方法。

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]) 
相关问题