Considérons le code T-SQL suivant extrait:T-SQL procédure stockée - détecter si un paramètre est fourni sous forme de SORTIE
CREATE PROC dbo.SquareNum(@i INT OUTPUT)
AS
BEGIN
SET @i = @i * @i
--SELECT @i
END
GO
DECLARE @a INT = 3, @b INT = 5
EXEC dbo.SquareNum @a OUTPUT
EXEC dbo.SquareNum @b
SELECT @a AS ASQUARE, @b AS BSQUARE
GO
DROP PROC dbo.SquareNum
Le jeu de résultats est:
ASQUARE BSQUARE
----------- -----------
9 5
Comme on le voit, @b
n'est pas au carré, b/c il n'a pas été transmis comme paramètre de sortie (pas de qualificatif OUTPUT
lors du passage dans le paramètre).
Je voudrais savoir s'il y a un moyen que je puisse vérifier dans le corps de procédure stockée (corps dbo.SquareNum dans ce cas) pour voir si un paramètre a en effet été adoptée en tant que paramètre OUTPUT
?
Je ne pense pas que vous pouvez faire cela. –
Je suis d'accord avec Giorgi - ne pense pas que vous pouvez vérifier cela au moment de l'exécution. Si vous avez peur de l'appliquer, vous pouvez le faire en tant que fonction scalaire qui renvoie la nouvelle valeur au lieu d'utiliser une procédure. –
Question intéressante. Je n'ai pas de réponse, mais par curiosité, pourquoi voudriez-vous faire cela? Je me demande s'il y a un problème sous-jacent qui pourrait être résolu d'une autre manière. –