在Ado.net中,代码使用输入和输出参数调用存储过程。
据我所知,如果某些输入参数是可选的(在SP中有默认值),除非需要,否则代码不需要定义和发送参数值。
我的问题是: 这同样适用于可选的输出参数吗?代码可以忽略可选的(有默认值)SP输出参数吗?
我本可以亲自测试一下,但我现在没有一个有效的例子,而且时间不够。
谢谢你。
答案 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