在不提供输出参数的情况下调用proc



这会运行:

declare @x int
exec spc_trace @spc='lets_wait', @session=@x out

鉴于此:

exec spc_trace @spc='lets_wait'

退货:

过程或函数"spc_trace"需要参数"@session"未提供。

那么,只要定义了输出参数,它是强制性的吗?在用户根本不需要输出值的情况下,是否没有办法绕过这个问题?

所有proc参数都是输入参数。如果一个参数被标记为输出,那么它也是一个输出参数。为了使参数";可选的";(无论是否输出(,像往常一样为其指定一个默认值。

create procedure testproc @in int = null, @out int = null output
as
begin
select isnull(@in, 0) + isnull(@out, 0) as [in+out]
select @out = 1000
end
go
exec testproc;
exec testproc @in = default, @out = default;
exec testproc @in = 10;
exec testproc @out = 20;
declare @x int = 100;
exec testproc @out = @x output;
select @x;
declare @y int = 100;
exec testproc @out = @y;
select @y;

最新更新