在Ado.net中,代码使用输入和输出参数调用存储过程。ADO.Net和存储过程输出参数
据我所知,如果某些输入参数是可选的(在SP中有默认值),代码不需要定义和发送参数值,除非需要。
我的问题是: 这同样适用于可选的输出参数吗?可以将代码忽略可选(具有默认值)的SP输出参数吗?
我可以自己测试一下,但我现在没有一个工作示例,而且时间不够。
谢谢你。
在Ado.net中,代码使用输入和输出参数调用存储过程。ADO.Net和存储过程输出参数
据我所知,如果某些输入参数是可选的(在SP中有默认值),代码不需要定义和发送参数值,除非需要。
我的问题是: 这同样适用于可选的输出参数吗?可以将代码忽略可选(具有默认值)的SP输出参数吗?
我可以自己测试一下,但我现在没有一个工作示例,而且时间不够。
谢谢你。
是。如果一个参数有一个默认值,那么它可以被安全省略,与参数方向(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参数返回值),是完全由程序和您的应用程序的细节。
编辑:原来我在这里错了,但我要离开我的答案,因为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
+1对于承认你的答案是错误的:) – 2012-04-12 12:57:54