2014-04-15 117 views
0

我在'dtproperties'附近得到錯誤的語法。如果我沒有將它作爲動態sql,它工作得很好。但是,如果它在動態sql中,爲什麼它不工作?我的任務需要我使用動態sql。動態SQL WHERE子句中的語法不正確

USE MyGuitarShop; 
DECLARE @DynamicSQL varchar(8000); 

SET @DynamicSQL = 
'SELECT TOP 1 sys.tables.name, COUNT(*) AS TotalTable 
FROM sys.tables 
WHERE sys.tables.name NOT IN ('dtproperties', 'sysdiagrams') 
GROUP BY sys.tables.name 
ORDER BY sys.tables.name'; 

EXEC (@DynamicSQL); 
+3

它算作動態SQL,如果它實際上不動態? –

回答

2

雙單引號可以轉義單引號。

SET @DynamicSQL = 
'SELECT TOP 1 sys.tables.name, COUNT(*) AS TotalTable 
FROM sys.tables 
WHERE sys.tables.name NOT IN (''dtproperties'', ''sysdiagrams'') 
GROUP BY sys.tables.name 
ORDER BY sys.tables.name';