有沒有辦法編寫SQL Server存儲過程,它是強類型的(即返回已知的列結果集)並使其語句組成爲動態的。SQL Server 2005/2008組使用參數的語句不使用動態SQL?
喜歡的東西:
SELECT SUM(Column0) FROM Table1
GROUP BY @MyVar
我試過下面還有:
SELECT SUM(Column0) FROM Table1
GROUP BY CASE @MyVar WHEN 'Column1' THEN Column1 ELSE Column2
第二條語句只能在場景中的DB類型的列1和列2是相同的。如果它們不是,則SQL引擎會拋出類似於以下內容的錯誤:「將nvarchar值'SYSTEM'轉換爲數據類型[The TYPE TYPE]時轉換失敗。」
我可以做些什麼來實現強大的結果集,但還有一些動態的部分 - 即我的案例中的石斑魚?這將暴露給LINQ。
編輯:
看起來你可以做到,但你不應該!絕對是過度殺傷。測試顯示數千倍的執行計劃。只有在更大的結果集時它纔會變慢。
+1整齊!我即將說這是不可能的......你每天都在繼續學習新的東西! – 2009-11-23 16:44:38
@Ivan:好的,我應該分組NULL.Please看我的更新。 – gbn 2009-11-23 18:18:09
我明白了。謝謝。 – 2009-11-23 18:22:23