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
答案 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
是保留字,必须包含在方括号中。