2010-08-26 4 views
0

J'ai une procédure stockée comme ceci:valeur de retour de procédure stockée

Select @totalMoney*@bonusPercent/100 

Comment puis-je retourner la valeur de la procédure et l'affecter à la varible? je veux dire quelque chose comme:

SET @myVarible = EXEC MyStoredProcedure @param1, @param1; 
+0

Pourquoi ne pas utiliser une fonction définie par l'utilisateur au lieu d'une procédure stockée? (Pas de SQL Server pratique, donc je ne peux pas écrire et tester un exemple, désolé.) Plus facile à utiliser dans d'autres procédures et fonctions stockées. Plus difficile d'appeler des clients, alors c'est un compromis. Si les deux autres codes t-sql et client ont besoin d'un accès, je crée la fonction définie par l'utilisateur, puis un wrapper de procédure stockée pour le client. –

Répondre

7

Utilisez une variable de output, le retour ne fonctionne qu'avec des entiers

exemple

create procedure prTest @id int, @id2 decimal(20,10) output 
as 
select @id2 = @id + 1 
go 

appellent maintenant comme ça

declare @Test decimal(20,10) 


exec prTest 5,@Test output 
select @Test 

sortie
6,00000000

1

Dans la procédure stockée il suffit d'utiliser

RETURN @X 

@X doit être un type de données entier.

Les codes de retour sont normalement utilisés pour les codes d'état. Un paramètre de sortie peut être un meilleur choix en fonction de ce que vous faites exactement.

déclarer le paramètre comme OUTPUT

CREATE PROCEDURE dbo.MyStoredProcedure 
@param1 INT, 
@myVarible DECIMAL(10,4) OUTPUT 
AS 
... 

et l'appeler comme

EXEC dbo.MyStoredProcedure @param1, @myVarible OUTPUT; 
Questions connexes