在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