En utilisant les Paramètres de SORTIE dans le SQL Dynamique dans des Procédures Stockées - il Possible?
J'ai un SP que j'ai créé pour vérifier pour les validations et de retour d'un Paramètre de SORTIE de 0 (Pas d'Erreur) ou 1 (Erreur). Cependant, je dois courir ce SP dans le SQL Dynamique puisqu'il va être exécuté par une boucle de données différentes.
Puis-je tirer la SORTIE de la SP par le biais de l'EXEC sp_executesql @SQL?
Je ne peux pas poster le code, mais je peux donner un exemple..
DECLARE
@SQL nVARCHAR(4000),
@SPName VARCHAR(200),
@Parm1 VARCHAR(100),
@Parm2 VARCHAR(100),
@Parm3 VARCHAR(100),
@ParmDefinition nVARCHAR(400),
@Error nVARCHAR(1)
SELECT
@SPName = 'spExample1',
@Parm1 = '000000',
@Parm2 = '111111',
@Parm3 = '@Err=@Error OUTPUT',
SET @SQL = 'EXEC ' + @SPName + ' ' + @Parm1 + ',' + @Parm2 + ',' + @Parm3 + '
SET @ParmDefinition = N'@Err2 nVARCHAR(1) OUTPUT'
EXEC sp_executesql @SQL, @ParmDefinition, @Err2=@Error OUTPUT
L' @Variable SQL finit par être:
EXEC spExample1 000000, 111111, @Err=@Error OUTPUT
^^Qui fonctionne parfaitement par lui-même.
Fondamentalement, je vais essayer d'obtenir la SORTIE à travers le code ci-dessus, mais quand il a couru à travers de façon dynamique.
Est-ce possible ou est-il une autre façon de le faire?
La façon dont les choses se genre de jeu à la fin semblent être les suivants:
EXEC sp_executesql EXEC spExample1 000000, 111111, @Err=@Error OUTPUT, @Err2 nVARCHAR(1) OUTPUT, @Err2=@Error OUTPUT
Après avoir regardé qu'il semble ridicule, mais toute aide serait vraiment appréciée.
- Le concept semble sain. Ce qui se passe lorsque vous l'exécutez?
- La valeur de SORTIE de @Erreur est NULLE, pas un 0 ou un 1. Pourtant, ceux sont les 2 seules options disponibles dans la SP: spExample1.
- Double Possible de Comment obtenir sp_executesql résultat dans une variable?
Vous devez vous connecter pour publier un commentaire.
Désolé pour le retard :D, le code suivant fonctionne parfaitement (Pour N.. de sortie et des paramètres d'entrée) s'il vous plaît essayez ceci (source):
Je n'ai pas testé en profondeur, mais je n'ai noter les points suivants:
Lors de l'appel de procédures stockées, vous ne pouvez pas les mix-and-match nommées et non-paramètres nommés. Ainsi, au lieu de
utilisation
mais, depuis la sortie paramètre défini pour sp_executesql est @Err2, il doit être
Cela devrait fonctionner.