我在SQL Server上有以下查询,其中一些值存储在先前计算的变量中:
SET @Command = N'INSERT INTO Products (Id
,Region
,Name
,Category
,CreatedBy
,CreatedOn
,) SELECT ' + @Id + ',
Region,
''' + @ProductName + ''',
Category,
CreatedBy,
CreatedOn FROM ' + @ProductTable + '
WITH (NOLOCK) WHERE Id IS NOT NULL';
EXEC(@Command)
Run Code Online (Sandbox Code Playgroud)
它运行正常,除非@ProductName的值包含引号(例如Jim的Product),在这种情况下,我将收到以下错误:字符串后的引号未封闭
有没有办法在这样的动态查询中处理变量中的单引号,其中插入的所选值之一(在这种情况下为@ProductName)直接是要插入的值,而不是源表上的实际列名需要检索其值以进行插入?