J'ai un morceau de SQL dynamique que je dois exécuter, je dois ensuite stocker le résultat dans une variable.
Je sais que je peux utiliser, sp_executesql
mais je ne peux pas trouver d'exemples clairs sur la façon de procéder.
tsql
dynamic-sql
JohnIdol
la source
la source
@retvalOUT=@retval OUTPUT
? Le troisième paramètre ne devrait-il passp_executesql
être juste@retval OUTPUT
?EXEC sp_executesql @sSQL, @ParmDefinition, @retval OUTPUT;
la source
insert into @tab
. Si vous essayezinsert into @tab
et exécutez plusieursexecute sp_executesql
, avec un sql différent,select * from @tab
affiche uniquement les résultats de la première exécutionla source
Déclarer @variable int
Exec @variable = nom_proc
la source
Les valeurs de retour ne sont généralement pas utilisées pour "renvoyer" un résultat mais pour renvoyer un succès (0) ou un numéro d'erreur (1-65K). Tout cela semble indiquer que sp_executesql ne renvoie pas de valeur, ce qui n'est pas correct. sp_executesql renverra 0 en cas de succès et tout autre nombre en cas d'échec.
Dans ce qui suit, @i renverra 2727
SSMS affichera ce Msg 2727, niveau 11, état 1, ligne 1 Impossible de trouver l'index «NonExistantStaticsName».
la source
DECLARE @ValueTable TABLE (Valeur VARCHAR (100))
la source
Si vous souhaitez renvoyer plus d'une valeur, utilisez ceci:
les valeurs renvoyées sont dans @retIndex et @retText
la source
Voici quelque chose que vous pouvez essayer
la source
C'était il y a longtemps, donc je ne sais pas si cela est toujours nécessaire, mais vous pouvez utiliser la variable @@ ROWCOUNT pour voir combien de lignes ont été affectées par l'instruction sql précédente.
Cela est utile lorsque, par exemple, vous créez une instruction Update dynamique et que vous l'exécutez avec exec. @@ ROWCOUNT afficherait le nombre de lignes mises à jour.
Voici la définition
la source
Cela a fonctionné pour moi:
la source