我有下面的示例代碼。結果是,它將這些列作爲VARCHAR類型。如何使用SQL Server 2012中的動態列進行查詢
declare @col1 varchar(80)='[Column1]'
declare @col2 varchar(80)='[Column2]'
SELECT @col1,@col2 FROM MyTable
我有下面的示例代碼。結果是,它將這些列作爲VARCHAR類型。如何使用SQL Server 2012中的動態列進行查詢
declare @col1 varchar(80)='[Column1]'
declare @col2 varchar(80)='[Column2]'
SELECT @col1,@col2 FROM MyTable
你必須使用動態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;
需要注意的是,你必須確保你的列名真正的列名。您還需要參數化您的查詢以增加安全性。如果您遇到任何這些錯誤,可能會造成巨大的安全問題。
您將需要動態SQL – Squirrel
謝謝但我想知道解決方案。我是這樣的http://www.codeproject.com/Articles/20815/Building-Dynamic-SQL-In-a-Stored-Procedure –
是的。你可以使用它作爲參考 – Squirrel