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