如何根据不同的参数值访问不同的表?
如:输入参数@FileType = 'Daily';用表Table_Daily_***;
参数@FileType = 'Monthly':用表Table_Monthly_***;
参数@FileType = 'Yearly':用表Table_Yearly_***;在一个存储过程中,有很多表要:
CREATE procedure spPopulate_DataLink @FileType varchar(100)
ASselect * into #CodeMap from 根据@FileType不同取不同的表
......处理#CodeMa语句...
insert into CodeMap select * from #CodeMap
drop table #CodeMap select * into #DataItemUnits from 根据@FileType不同取不同的表
......处理#DataItemUnits语句...
insert into DataItemUnits select * from #DataItemUnits
drop table #DataItemUnits
................
...............
以下还有几十张这样的表要插入语句
--------------------
请问有啥方法解决:
select * into #CodeMap from 根据@FileType不同取不同的表
----比如传入@FileType='Daily'时候用Table_Daily_***:
select * into #CodeMap from Table_Daily_***
----如果传入@FileType='Yearly'时候用Table_Yearly_***:
select * into #CodeMap from Table_Yearly_***.....
以下还有几十张这样的表要这样判断
如:输入参数@FileType = 'Daily';用表Table_Daily_***;
参数@FileType = 'Monthly':用表Table_Monthly_***;
参数@FileType = 'Yearly':用表Table_Yearly_***;在一个存储过程中,有很多表要:
CREATE procedure spPopulate_DataLink @FileType varchar(100)
ASselect * into #CodeMap from 根据@FileType不同取不同的表
......处理#CodeMa语句...
insert into CodeMap select * from #CodeMap
drop table #CodeMap select * into #DataItemUnits from 根据@FileType不同取不同的表
......处理#DataItemUnits语句...
insert into DataItemUnits select * from #DataItemUnits
drop table #DataItemUnits
................
...............
以下还有几十张这样的表要插入语句
--------------------
请问有啥方法解决:
select * into #CodeMap from 根据@FileType不同取不同的表
----比如传入@FileType='Daily'时候用Table_Daily_***:
select * into #CodeMap from Table_Daily_***
----如果传入@FileType='Yearly'时候用Table_Yearly_***:
select * into #CodeMap from Table_Yearly_***.....
以下还有几十张这样的表要这样判断
declare @sql NVARCHAR(MAX), @FileType NVARCHAR(255)
SET @sql = 'select * from '
IF(@FileType = 'Daily')
SET @sql = @sql + 'Table_Daily'
ELSE IF(@FileType = 'Yearly')
SET @sql = @sql + 'Table_Yearly'EXEC(@sql)
期待楼下的大神有新方法
select * from Table_Daily_***
if @FileTyp ='Monthly'
select * from Table_Monthly_***
if @FileType = 'Yearly'
select * from Table_Yearly_***
set @sql='select * from '
if @FileType= 'Daily'
set @sql=@sql+'Table_Daily_***'
else if @FileTyp ='Monthly'
set @sql=@sql+'Table_Monthly_***'
else if @FileType = 'Yearly'
set @sql=@sql+'Table_Yearly_***'
exec(@sql)
总之,要变表名,只能拼SQL,就写不成静态SQL了。
declare @sql NVARCHAR(MAX)
declare @FileType varchar(10)
set @FileType = 'Daily' SET @sql = 'select * into #AnnouncementsRepType from '
IF @FileType = 'Monthly'
SET @sql = @sql + 'vw_AnnouncementsRepType_Monthly'
ELSE IF(@FileType = 'Daily')
SET @sql = @sql + 'vw_AnnouncementsRepType' print @sql
exec sp_executesql @sql select * from #AnnouncementsRepType这个临时表无效--Invalid object name '#AnnouncementsRepType'.
难道一定要用全局表吗? ##AnnouncementsRepType
CREATE TABLE #temp1(id int)
EXEC('insert #temp1 values(1)')
SELECT * from #temp1--可行
EXEC('CREATE TABLE #temp1(id int) insert #temp1 values(1) SELECT * from #temp1')--可行
IF object_id('tempdb..##temp', 'u') IS NOT NULL
DROP TABLE ##temp
EXEC('select * into ##temp from dbo.test')
SELECT * from ##temp