2012-03-28 1 views
4

Mon équipe utilise un serveur wiki basé sur python qui appelle des procédures stockées sur une base de données SQL Server. Idéalement, nous aimerions renvoyer des valeurs entières (1,0, -1) à partir de la procédure stockée pour afficher les résultats de base.Comment obtenir une valeur de retour de procédure stockée SQL Server à l'aide de pyodbc?

Selon un 2008 thread on Google Groups, les valeurs renvoyées ne sont pas prises en charge par pyodbc, donc l'alternative est de sélectionner le résultat sous forme de ligne et de le vérifier à la place. Est-ce toujours le cas? Existe-t-il une méthode programmatique (prise en charge et documentée) pour vérifier la valeur de retour des procédures stockées SQL? (Si oui, s'il vous plaît ajouter une référence ou un exemple courant.)

Répondre

6

J'utilise ceci:

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

Il ne fonctionne que sur SQL Server (ou peut-être Sybase), mais il est une solution décente.

2

j'ajouté ce qui suit pour l'obtenir pour travailler dans mon 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]) 
Questions connexes