Betrachten Sie den folgenden T-SQL-Code-Schnipsel:T-SQL Stored Procedure - Erkennen, wenn ein Parameter als OUTPUT
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
Die Ergebnismenge ist:
ASQUARE BSQUARE
----------- -----------
9 5
Wie man sehen kann, @b
ist nicht quadriert, b/c wurde nicht als Ausgangsparameter übergeben (kein OUTPUT
Qualifier bei der Übergabe des Parameters).
Ich würde gerne wissen, ob es einen Weg gibt, ich könnte innerhalb der gespeicherten Prozedur Körper überprüfen (dbo.SquareNum Körper in diesem Fall) zu sehen, ob ein Parameter tatsächlich als OUTPUT
Parameter übergeben wurde?
Ich glaube nicht, dass Sie das tun können. –
Ich stimme Giorgi zu - glaube nicht, dass du das zur Laufzeit überprüfen kannst. Wenn Sie Bedenken haben, es zu erzwingen, können Sie dies als Skalarfunktion ausführen, die den neuen Wert zurückgibt, anstatt eine Prozedur zu verwenden. –
Interessante Frage. Ich habe keine Antwort, aber aus Neugier, warum willst du das machen? Ich frage mich, ob es ein zugrunde liegendes Problem gibt, das auf andere Weise gelöst werden könnte. –