consideri il seguente codice T-SQL frammento:T-SQL stored procedure - rilevare se un parametro viene fornito come 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
Il set di risultati è:
ASQUARE BSQUARE
----------- -----------
9 5
Come si può vedere, @b
non è quadrato, b/c non è stato passato come parametro di uscita (no OUTPUT
qualificatore quando si passa nel parametro).
Vorrei sapere se è possibile verificare all'interno del corpo della procedura memorizzata (corpo dbo.SquareNum in questo caso) per verificare se un parametro è stato effettivamente inoltrato come parametro OUTPUT
?
Non penso che tu possa farlo. –
Sono d'accordo con Giorgi - non pensare di poterlo controllare in fase di esecuzione. Se sei preoccupato di applicarlo, potresti voler farlo come una funzione scalare che restituisce il nuovo valore invece di usare una procedura. –
Interessante domanda. Non ho una risposta, ma per curiosità, perché vorresti farlo? Mi chiedo se c'è un problema di base che potrebbe essere risolto in un altro modo. –