M. *_*hid 8 t-sql sql-server stored-procedures output-parameter
请考虑以下T-SQL代码段:
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
Run Code Online (Sandbox Code Playgroud)
结果集是:
ASQUARE BSQUARE
----------- -----------
9 5
Run Code Online (Sandbox Code Playgroud)
可以看出,@b不是平方,b/c它没有作为输出参数传入(OUTPUT传入参数时没有限定符).
我想知道是否有一种方法可以检查存储过程体(在本例中为dbo.SquareNum体),以查看参数是否确实已作为OUTPUT参数传入?
小智 0
您可以通过查询系统视图来完成此操作:
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'
Run Code Online (Sandbox Code Playgroud)
或检查 Management Studio 中的数据库树:[数据库] -> 可编程性 -> 存储过程 -> [过程] -> 参数