我有下面的示例代码。结果是,它将这些列作为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