2013-10-08 67 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中的語法仍然無效 –