2010-11-11 24 views

Répondre

0

J'ai utilisé le code suivant pour appeler une procédure stockée et récupérer sa valeur de retour. Le code crée une procédure stockée temporaire qui prend deux paramètres d'entrée et renvoie leur somme via la valeur de retour. Si votre procédure stockée exécute des requêtes, assurez-vous de traiter tous les résultats disponibles via sqlsrv_next_result avant d'essayer d'accéder à la valeur de retour.

J'espère que cette information peut vous aider ..

code

est ci-dessous:

$conn = sqlsrv_connect('.\SQLExpress', array('Database'=>'Northwind')); 

$sql = "CREATE PROCEDURE #ReturnParam (@p1 int, @p2 int) AS 
     RETURN @p1 + @p2"; 
$stmt = sqlsrv_query($conn, $sql); 

$sql = '{? = CALL #ReturnParam(?, ?)}'; 
$returnVariable = -1; 
$inputVariable1 = 18; 
$inputVariable2 = 24; 

$params = array(array($returnVariable, SQLSRV_PARAM_OUT), 
       array($inputVariable1, SQLSRV_PARAM_IN), 
       array($inputVariable2, SQLSRV_PARAM_IN)); 

$stmt = sqlsrv_query($conn, $sql, $params); 

echo "Return value: ".$returnVariable; 
+0

Pouvez-vous donner un exemple où vous appelez une procédure stockée existante? J'utilise osql pour l'exécuter. – chama

+0

Aussi, est-ce PHP? J'utilise Windows Shell, donc je ne suis pas sûr que PHP m'aiderait. – chama

+0

ok, demain je vais fournir quelque chose pour C# –

0

Si vous avez affaire avec SQL 2005 et au-dessus, essayez d'utiliser SQLCMD à la place.

Découvrez toutes les bonnes choses qu'il offre que vous pouvez utiliser avec le script: MSDN Page for sqlcmd command

2

Dans shell Windows CMD, cela peut être fait avec une boucle FOR un appel sqlcmd. Habituellement seulement si la requête retourne 1 enregistrement.

FOR /F %%A IN ('sqlcmd <query paramters>') DO SET MYCMDVARIABLE=%%A 

Il peut être configuré pour plusieurs colonnes, mais retournera toujours des valeurs de la dernière ligne du jeu de retour SQL.