Rozważmy następujący kodu T-SQL fragmentu:T-SQL procedury przechowywanej - wykrywanie, czy parametr jest dostarczany jako wyjście
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
wynikowa jest:
ASQUARE BSQUARE
----------- -----------
9 5
Jak widać @b
nie jest podniesiony do kwadratu, b/c nie został przekazany jako parametr wyjściowy (nr OUTPUT
kwalifikator podczas przekazywania parametru).
Chciałbym wiedzieć, czy istnieje sposób mogę sprawdzić w ramach procedury przechowywanej body (w tym przypadku dbo.SquareNum), aby sprawdzić, czy parametr rzeczywiście został przekazany jako parametr OUTPUT
?
Nie sądzę, że możesz to zrobić. –
Zgadzam się z Giorgi - nie myśl, że możesz to sprawdzić w czasie wykonywania. Jeśli martwisz się o jego egzekwowanie, możesz to zrobić jako funkcję skalarną, która zwraca nową wartość zamiast korzystania z procedury. –
Interesujące pytanie. Nie mam odpowiedzi, ale z ciekawości, dlaczego miałbyś to robić? Zastanawiam się, czy istnieje podstawowy problem, który można rozwiązać w inny sposób. –