J'ai un SP que j'ai créé pour vérifier les validations et retourner un paramètre OUTPUT de 0 (aucune erreur) ou 1 (erreur). Cependant, je dois exécuter ce SP dans Dynamic SQL car il sera parcouru par une boucle de données différentes. Puis-je tirer la sortie du SP à travers l'EXEC sp_executesql @SQL?Utilisation de paramètres OUTPUT dans SQL dynamique dans des procédures stockées - Possible?
Je ne peux pas poster le code réel, 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 = '@[email protected] OUTPUT',
SET @SQL = 'EXEC ' + @SPName + ' ' + @Parm1 + ',' + @Parm2 + ',' + @Parm3 + '
SET @ParmDefinition = N'@Err2 nVARCHAR(1) OUTPUT'
EXEC sp_executesql @SQL, @ParmDefinition, @[email protected] OUTPUT
La variable @SQL finit par être:
EXEC spExample1 000000, 111111, @[email protected] OUTPUT
^^ Ce qui fonctionne parfaitement par lui-même.
Fondamentalement, j'essaye d'obtenir la SORTIE à travers le code ci-dessus, mais quand il est exécuté Dynamiquement. Est-ce possible ou existe-t-il un autre moyen de le faire?
La façon dont les choses genre de jeu dans la fin semblent être:
EXEC sp_executesql EXEC spExample1 000000, 111111, @[email protected] OUTPUT, @Err2 nVARCHAR(1) OUTPUT, @[email protected] OUTPUT
Après avoir regardé ce qu'il a l'air ridicule, mais toute aide serait certainement appréciée.
Le concept semble son. Que se passe-t-il lorsque vous l'exécutez? –
La valeur OUTPUT de @Error est NULL, pas un 0 ou un 1. Pourtant, ce sont les deux seules options disponibles dans le SP: spExample1. – iamtheratio
Copie possible de [Comment obtenir le résultat de sp \ _executesql dans une variable?] (Http://stackoverflow.com/questions/803211/how-to-get-sp-executesql-result-into-a-variable) –