¿Cómo obtener un valor de retorno de un procedimiento almacenado de SQL Server usando pyodbc?

Mi equipo está utilizando un servidor wiki basado en python que llama a procedimientos almacenados en una base de datos de SQL Server. Idealmente, nos gustaría devolver valores enteros (1,0, -1) del procedimiento almacenado para mostrar los resultados básicos.

De acuerdo con un hilo de 2008 en Grupos de Google , los valores de retorno no son compatibles con pyodbc, por lo que la alternativa es SELECCIONAR el resultado como una fila y verificarlo en su lugar. ¿Sigue siendo el caso? ¿Existe una forma programática (admitida y documentada) de verificar el valor de retorno de los procedimientos almacenados de SQL? (Si es así, por favor agregue una referencia o ejemplo actual)

Aquí hay información relevante: http://code.google.com/p/pyodbc/wiki/StoredProcedures

Parece que los valores de retorno aún no son compatibles, por lo que deberá utilizar un SELECT .

Estoy usando esto:

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

Solo funciona en SQL Server (o quizás en Sybase), pero es una solución decente.

Agregué lo siguiente para que funcione en mi aplicación:

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