給定一對變量中的表名和列名,我可以在不使用動態sql的情況下執行選擇查詢嗎?如何在列名和表名都傳入時運行查詢?
例如,我想要的東西更好比這
CREATE PROCEDURE spTest (@table NVARCHAR(30), @column NVARCHAR(30)) AS
DECLARE @sql NVARCHAR(2000)
SELECT @sql = N'SELECT ' + @column + N' FROM ' + @table
PRINT @sql
EXEC sp_executesql @sql
我想這樣做,因爲我的動態SQL版本比非動態版3X慢(這沒有按」 t支持一個可編程的表/列名,因此這個問題)。
初步共識似乎是我想要的不能完成。儘管感謝您的期待!我希望可能有一些基於創意的解決方案(可能使用視圖)或一些性能竅門,我應該考慮... – 2009-06-15 21:24:09
根據這篇文章(http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/changing- exec-to-sp_executesql-doesn-tp),正確使用sp_executesql可以通過參數化來改進動態查詢。 – 2009-06-17 17:23:00