として供給されるかどうかを検出する以下のT-SQLコードスニペットを検討:T-SQLストアドプロシージャ - パラメータが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
結果セットがある:
ASQUARE BSQUARE
----------- -----------
9 5
分かるように、 @b
は二乗されていません。b/c出力パラメータとして渡されませんでした(パラメータを渡すときは、OUTPUT
修飾子なし)。
パラメータが実際にOUTPUT
パラメータとして渡されたかどうかを確認するために、ストアドプロシージャの本文(この場合はdbo.SquareNumボディ)内でチェックできる方法があるかどうかを知りたいですか?
select
p.name as proc_name,
par.name as parameter_name,
par.is_output
from sys.procedures p
inner join sys.parameters par on par.object_id=p.object_id
where p.name = 'SquareNum'
またはデータベース・ツリーのManagement Studioで確認してください:
私はあなたがそれを行うことはできないと思います。 –
私はGiorgiに同意します - 実行時に確認することはできません。それを強制することを心配している場合は、プロシージャーを使用する代わりに新しい値を戻すスカラー関数としてこれを行うことができます。興味深い質問。 –
私は答えはありませんが、好奇心の理由から、なぜあなたはこれをしたいのですか?別の方法で解決できる根本的な問題があるのだろうかと思います。 –