PRINT不打印动态sql

时间:2014-05-15 17:32:47

标签: sql sql-server-2008

declare @sImport_Table1 table 
 (
   Id int identity(1,1) ,
   Zone nvarchar(50),
   Sub_Code nvarchar(50),
   Geography nvarchar(50),
   DayOfWeek nvarchar(50)
 )



INSERT INTO @sImport_Table1 SELECT 'A','Z','Geo','SUN'

declare @sZone nvarchar(50)
declare @sSubCode nvarchar(50)
declare @c_Geography nvarchar(50)='Geo'
declare @c_DayOfWeek nvarchar(50)='SUN'
declare @sImport_Table nvarchar(500)='@sImport_Table1'



--SELECT * FROM @sImport_Table1
declare @sQuery nvarchar(4000) 

SET @sQuery='SELECT  '+ @sZone + ' = Zone,'+
                       @sSubCode +' = Sub_Code
              FROM'+ @sImport_Table +
             ' WHERE Geography ='+ @c_Geography +
             ' AND DayOfWeek = '+ @c_DayOfWeek

PRINT @sQuery 

*************** 已编辑************************ ********

declare @sImport_Table1 table 
 (
   Id int identity(1,1) ,
   Zone nvarchar(50),
   Sub_Code nvarchar(50),
   Geography nvarchar(50),
   DayOfWeek nvarchar(50)
 )



INSERT INTO @sImport_Table1 SELECT 'A','Z','Geo','SUN'

declare @sZone nvarchar(50)
declare @sSubCode nvarchar(50)
declare @c_Geography nvarchar(50)='Geo'
declare @c_DayOfWeek nvarchar(50)='SUN'
declare @sImport_Table nvarchar(500)='@sImport_Table1'



--SELECT * FROM @sImport_Table1
declare @sQuery nvarchar(4000) 

SET @sQuery='''SELECT @sZone = Zone, '+
                   '@sSubCode = Sub_Code
          FROM '+ @sImport_Table +
         ' WHERE Geography ='''+ @c_Geography + '''
          AND [DayOfWeek] = '''+ @c_DayOfWeek +''''''

PRINT @sQuery 
sp_executesql @sQuery

PRINT @sZone 
PRINT @sSubCode    

1 个答案:

答案 0 :(得分:1)

您有@sZone@sSubCode null。与null的连接始终为null

这是有道理的。

SET @sQuery='SELECT @sZone = Zone, '+
                   '@sSubCode = Sub_Code
          FROM '+ @sImport_Table +
         ' WHERE Geography ='+ @c_Geography +
         ' AND [DayOfWeek] = '+ @c_DayOfWeek

请注意,DayOfWeek是保留字,必须包含在方括号中。