2012-04-09 198 views
0

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

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

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

我可以自己测试一下,但我现在没有一个工作示例,而且时间不够。

谢谢你。

回答

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

编辑:原来我在这里错了,但我要离开我的答案,因为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

+0

+1对于承认你的答案是错误的:) – 2012-04-12 12:57:54

相关问题