2016-04-25 83 views
1

我有下面的示例代碼。結果是,它將這些列作爲VARCHAR類型。如何使用SQL Server 2012中的動態列進行查詢

declare @col1 varchar(80)='[Column1]' 
declare @col2 varchar(80)='[Column2]' 
SELECT @col1,@col2 FROM MyTable 
+0

您將需要動態SQL – Squirrel

+0

謝謝但我想知道解決方案。我是這樣的http://www.codeproject.com/Articles/20815/Building-Dynamic-SQL-In-a-Stored-Procedure –

+0

是的。你可以使用它作爲參考 – Squirrel

回答

2

你必須使用動態SQL:

DECLARE @col1 VARCHAR(80) = 'Column1'; 
DECLARE @col2 VARCHAR(80) = 'Column2'; 

DECLARE @sql NVARCHAR(MAX); 

SELECT @sql = 'SELECT ' + QUOTENAME(@col1) + ', ' + QUOTENAME(@col2) + ' FROM MyTable;'; 

EXEC sp_executesql @sql; 

需要注意的是,你必須確保你的列名真正的列名。您還需要參數化您的查詢以增加安全性。如果您遇到任何這些錯誤,可能會造成巨大的安全問題。

1

嘗試,

declare @query nvarchar(500) = 'select ' + @col1 + ', ' + @col1 + ' FROM MyTable' 
exec @query 
+0

應該是'exec(@query)' – Squirrel

+0

謝謝你...它的工作 –

+1

你好@Puneet_2696717你說得很感謝你,但如果它解決了你的問題,接受一個答案就更好了。 [請閱讀此:人的答案](http://stackoverflow.com/help/someone-answers) – Shnugo