2012-05-04 47 views
1

我有一個具有類型SYS_REFCUROR的OUT參數的存儲過程。在執行過程之前,我從C#中添加除OUT參數以外的所有參數。但是當我執行程序時,我得到「錯誤的數量或類型的參數」錯誤。我的問題是,如果我不打算爲該參數分配任何值,爲什麼我必須將其添加到我的參數集合中?C# - 我必須將參數添加到參數集合

+0

檢查答案..... –

回答

1

您需要添加參數,因爲在執行存儲過程之後,sql的out參數值將存儲在代碼中提供的out參數中,您可以在稍後執行時使用該參數。

如果你想省略傳遞出的參數,然後指定一個默認值輸出參數,這將解決您的問題。

例如:

CREATE PROCEDURE MyTest 
    @Data1 int 
    ,@Data3 int = null output 

如果你這樣做如上,那麼你就需要通過代碼來傳遞輸出參數,它會隱藏你所得到的錯誤。

+0

我們不能將默認值添加到Oracle中的OUT和IN OUT參數。不瞭解SQL Server。 –

+0

@MikeJM - 與SQL Server,你可以這樣做,但甲骨文我沒有想法..如果它不是比你需要從你加入了prameter代碼中沒有選項留 –

+0

但是且慢。如果我沒有在程序中爲我的OUT參數指定任何值,該怎麼辦?因爲我OUT參數是SYS_REFCURSOR這可能是這種情況。我只打開遊標一些選擇語句,如果我的V_TYPE參數爲0,否則我做插入,更新或者在V_TYPE的值刪除,所以我不分配給OUT參數的任何值。 –