2013-10-08 68 views
0

下面的SQL语句显示与打印,但与EXEC坚实的成果,给了我附近有语法错误“取代”附近有语法错误“取代”

USE EPDB 

DECLARE @Table as nvarchar(100) 
DECLARE @Column as nvarchar(100) 
DECLARE @Select as nvarchar(375) 
DECLARE @Where as nvarchar(275) 

SET @Table = 'TableABC' 
SET @Column = 'ColumnABC'`enter code here` 
SET @Select = 'SELECT * FROM INFORMATION_SCHEMA.COLUMNS' 
SET @Where = 'CRITERIA = ''VALUE''' 


-- EXEC ('SELECT * FROM INFORMATION_SCHEMA.COLUMNSWHERETABLE_NAME = ' + @Table + '''') 

PRINT @Select + ' WHERE ' + REPLACE(REPLACE(@Where,'CRITERIA','TABLE_NAME'),'VALUE',@Table) 

EXEC (@Select + ' WHERE ' + REPLACE(REPLACE(@Where,'CRITERIA','TABLE_NAME'),'VALUE',@Table)) 

不知道是怎么回事就在这里

回答

2

试试这个:

DECLARE @sSQL varchar(1000) 

SET @sSQL = @Select + ' WHERE ' + REPLACE(REPLACE(@Where,'CRITERIA','TABLE_NAME'),'VALUE',@Table) 

EXEC (@sSQL) 

我相信EXEC()接受字符串变量或字符串常量,但不接受组合。

+0

我已经看到SQL将它们结合在一起,但似乎对于我们的安装(我们仍在运行SQL2005)组合不会飞;谢谢你尤里 –

+0

很高兴为你工作。而且我认为你是正确的,并且在更高版本中连接成为可能。 –

+0

不,SQL Server 2012和2014中的语法仍然无效 –