将语句分配给 EXEC sp_executesql 的 @ 变量时出现等号问题

Issues with equal sign when assigning statement to @ variable for EXEC sp_executesql

您好:我正在尝试将下面的Insert and select语句封装成一个变量,用于SQL到运行。

当计算中包含等号(或就在附近)时会出现问题 必须转换 CustomPollerAssignmentID 列,因为它本身就是一个 PK 和一个唯一标识符(见图)

传递给 sp_executesql 时,必须做什么才能使语句正确求值? 我收到如下所示的语法错误

declare 
@date datetime,
@query nvarchar(Max)
set @date = getdate()-4
set @query = --'Insert into [SolarWindsOrion].[dbo].[BWC_VPN_Hourly_Long_Store]
                'SELECT * FROM [SolarWindsOrion].[dbo].[CustomPollerStatistics_Hourly]
                where Cast(CustomPollerAssignmentID as nvarchar(max)) = 63FEB60-4516-4C1A-9A11-DB30ACA44301'
                
EXEC sp_executesql @query

更新--> 我尝试添加单引号。 虽然该语句执行.. 没有返回结果。见下图

您需要像这样 '63FEB60-4516-4C1A-9A11-DB30ACA44301' 将其放在引号中,因此您的即席查询将如下所示:

  declare 
    @date datetime,
    @query nvarchar(Max)
    set @date = getdate()-4
    set @query = --'Insert into [SolarWindsOrion].[dbo].[BWC_VPN_Hourly_Long_Store]
                    'SELECT * FROM [SolarWindsOrion].[dbo].[CustomPollerStatistics_Hourly]
                    where Cast(CustomPollerAssignmentID as nvarchar(max)) = ''63FEB60-4516-4C1A-9A11-DB30ACA44301'''
                    
    EXEC sp_executesql @query