How to get a SQL Server stored procedure return value using pyodbc?

纵饮孤独 提交于 2019-12-19 03:45:29

问题


My team's using a python-based wiki server that calls stored procedures on a SQL Server database. Ideally, we'd like to return integer values (1,0,-1) from the stored procedure to show basic results.

According to a 2008 thread on Google Groups, return values aren't supported by pyodbc, so the alternative is to SELECT the result as a row and check it instead. Is that still the case? Is there a (supported and documented) programmatic way to check the return value from SQL stored procedures? (If so, please add a current reference or example.)


回答1:


Here's some relevant information: http://code.google.com/p/pyodbc/wiki/StoredProcedures

It sounds like return values are still not supported, so you'll need to use a SELECT.




回答2:


I'm using this:

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])

It only works on SQL Server (or maybe Sybase), but it's a decent workaround.




回答3:


I added the following to get it to work in my application:

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])


来源:https://stackoverflow.com/questions/9915788/how-to-get-a-sql-server-stored-procedure-return-value-using-pyodbc

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!