4
我有一個生成的SQL查詢塊,它將一個表值參數作爲輸入。如何爲文本命令創建表值參數
我有一個DataTable data
輸入參數,則:
// add the table-value parameter
var tvp = com.Parameters.AddWithValue("data", data);
tvp.SqlDbType = SqlDbType.Structured;
tvp.TypeName = "???";
com.ExecuteNonQuery();
的問題是,如果該命令不是一個存儲過程然後到被宣佈爲TypeName
需求。
參數data
中的列的數量和類型可能會有很大差異,所以我沒有可以使用的SQL類型。
有沒有什麼方法可以用這種方式使用TVP?
是的,這是我走下的路線,但經過很多混亂之後,我發現它很慢。起初我認爲這是由於動態創建類型,但所有TVP調用都很慢。它看起來就像在引擎蓋下,TVP是用每行的'insert into'語句*構建的*。它更快速地(我們正在說幾秒到幾毫秒)動態構建自己的,甚至使用'SqlBulkCopy'。我認爲.Net的TVP實現可能會被破壞,因爲如果它使用''insert'來分隔值集合,那麼它會更快。 – Keith 2011-05-19 22:24:16
良好的信息,感謝張貼您的經驗。你的問題引起了我的興趣,而當我有機會看看我能否實現它時,我會試試它。 – RThomas 2011-05-19 23:47:18