Comment utiliser une valeur à partir d'une procédure stockée dans un autre?
J'ai la déclaration suivante dans une Procédure Stockée:
DECLARE @Count INT
EXEC @Count = GetItemCount 123
SELECT @Count
Qui appelle une autre procédure stockée avec la déclaration suivante à l'intérieur:
SELECT COUNT(Item) FROM tblItem WHERE ID = @ID
Cependant, quand je test l'appel EXEC affiche la valeur correctement, mais il
n'est pas affecté à la fonction @Variable Count correctement.
J'ai vu des exemples ou des procédures stockées utilisées comme cela, y compris ici, mais aucun n'a eu un paramètre et une valeur de retour utilisé (que j'ai pu trouver).
Le Paramètre ID est passé dans le deuxième énoncé qui renvoie une valeur du compte utilisé par le premier StoredProcedure - toutes les infos que j'ai lu semble indiquer cela devrait fonctionner, mais elle n'a pas l' @valeur de nombre est aways à zéro, même lorsque le GetItemCount renvoie toujours la valeur correcte.
C'est dans Microsoft SQL Server 2008 si cela aide.
OriginalL'auteur RoguePlanetoid | 2010-06-08
Vous devez vous connecter pour publier un commentaire.
Dans la procédure stockée, êtes vous
a) d'affecter la valeur du comte à un paramètre de sortie:
appelé comme:
ou, b) Affectation de la valeur de nombre comme valeur de retour:
appelé comme:
Avez cherché cette question à quelques reprises depuis que j'ai posé cette question et est venu ici et a trouvé la solution, etait jusqu'vote à chaque fois qu'il m'a aidé!
OriginalL'auteur Matthew Abbott
Vous devez passer
@Count
comme un paramètre de sortie.OriginalL'auteur codingbadger
Une autre façon
OriginalL'auteur Madhivanan
Le code suivant ne fonctionnera pas si il n'y a pas de paramètres d'entrée pour la SP:
Préférable d'utiliser le format suivant pour tous les cas (il fonctionne sur toutes les versions):
OriginalL'auteur MC9000
La solution (b) donnée par M. Matthieu ne fonctionne pas quand u appellent cela dans une autre procédure stockée (bien sûr la solution de (un) fonctionne parfaitement lorsque nous utilisons SORTIE param).
Alternance pour la solution (b) est M. Madhivanan de la solution. j'.e, de créer une table temporaire et de l'utiliser ensuite la laisser tomber.
Ci-dessous sont d'autres solutions..
Nous ne pouvons pas obtenir la valeur d'une SORTIE interne clause dans une procédure stockée directement.
Nous devons donc utiliser le paramètre de SORTIE ou la VALEUR de RETOUR à la place.
Veuillez consulter les suggestions suivantes:
SOLUTION 1:
SOLUTION:2
OriginalL'auteur santhosh kumar Gudise
Ce que vous êtes chasse dans la variable @Count est le statut de l'exécution de la procédure stockée GetItemCount et pas de la valeur que vous attendez. Pour capturer cette valeur, vous avez deux façons.
De déclarer un autre paramètre @compter de la SORTIE en GetItemCount. Ainsi, vous aurez GetItemCount déclaration comme suit
Création de la PROCÉDURE GetItemCount @ID int, @comte int sortie
à l'intérieur, vous pouvez utiliser
SELECT @count = COUNT(Élément) DE tblItem where ID = @ID
OriginalL'auteur Mohan Gundlapalli