ADO.Net和存储过程输出参数

时间:2012-04-09 19:22:59

标签: sql-server stored-procedures ado.net

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

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

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

我本可以亲自测试一下,但我现在没有一个有效的例子,而且时间不够。

谢谢你。

2 个答案:

答案 0 :(得分: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参数返回值),完全取决于过程和应用程序的细节。

答案 1 :(得分: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