WHERE子句中的动态SQL不正确的语法

时间:2014-04-15 01:00:53

标签: sql-server dynamic-sql

我在'dtproperties'附近得到的语法不正确。如果我没有它作为动态SQL,它的工作完全正常。但是,如果它在动态sql中,为什么它不起作用?我的任务要求我使用动态sql。

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);

1 个答案:

答案 0 :(得分: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';