因此,這裏是交易。在我們的數據庫中,爲了安全性和模塊性,我們將大部分讀取(即select語句)包裝在表值函數中。所以我有一個TVF,它定義了一個或多個可選參數。如何在ADO.NET中爲表值函數調用傳遞默認關鍵字
我相信具有默認的參數的TVF要求使用關鍵字default
的調用TVF像這樣的時候:
select * from fn_SampleTVF(123, DEFAULT, DEFAULT)
這很好,一切工作在查詢分析器,但是當談到時間,實際從ADO.NET發出這個請求,我不知道如何創建一個sql參數,實際上將字default
放入到呈現的sql中。
我現在有事情大致是這樣的:
String qry = "select * from fn_SampleTVF(@requiredParam, @optionalParam)";
DbCommand command = this.CreateStoreCommand(qry, CommandType.Text);
SqlParameter someRequiredParam = new SqlParameter("@requiredParam", SqlDbType.Int);
someRequiredParam.Value = 123;
command.Parameters.Add(someRequiredParam);
SqlParameter optionalParam = new SqlParameter("@optionalParam", SqlDbType.Int);
optionalParam.Value = >>>> WTF? <<<<
command.Parameters.Add(optionalParam);
因此,任何人有任何想法如何通過default
到TVF?
最好的解決辦法是避免使用中的違約條款TVF參數定義,按照Kevin的建議傳入空值,並在TVF主體中手動創建默認值。這裏是我發現的一篇文章(關於Sprocs,但問題是一樣的)。 http://social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/3825fe1c-7b7e-4642-826b-ea024804f807 與微軟相關的所有其他的事情,讓這個工作將涉及一半烤制的解決方法。 – Mason 2009-12-02 22:43:29