0

在 Ado.net 中,代码调用带有输入和输出参数的存储过程。

我知道如果某些输入参数是可选的(在 SP 中有默认值),除非需要,否则代码不需要定义和发送参数值。

我的问题是:这同样适用于可选的输出参数吗?代码可以忽略可选的(具有默认值)SP 输出参数吗?

我本可以自己测试它,但我现在没有一个可行的例子,而且我的时间很短。

谢谢。

4

2 回答 2

3

是的。如果参数具有默认值,则可以安全地省略它,与参数方向(INPUT 或 OUTPUT)无关。从 ADO.Net 调用该过程这一事实完全无关紧要。例如:

create procedure usp_test
    @a int = 1 output,
    @b int = 2
as
begin
    set @a = @b;
end 
go

exec usp_test 

从业务规则的角度来看是否安全(即忽略 OUTPUT 参数返回值),完全取决于过程和您的应用程序的具体情况。

于 2012-04-09T19:39:39.960 回答
1

编辑:原来我在这里错了,但我会留下我的答案,因为信息SqlParameter可能有用。对不起,虽然不准确。

我不相信。您必须发送一个OUTPUT参数,在 ADO.NET 中,这是通过添加一个SqlParameter将其ParameterDirection属性设置为ParameterDirection.Output.

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.direction.aspx

http://msdn.microsoft.com/en-us/library/system.data.parameterdirection.aspx

于 2012-04-09T19:27:56.347 回答