查询返回的查询表
Query tables returned by query
我想查询所有表中的列,其名称是从查询中获得的。
像这样:
SELECT [COLUMN_NAME] FROM (SELECT FKTABLE_NAME FROM @temp_table)
虽然这给出了语法错误,有没有办法做到这一点?
假设所有可能的表中的数据都是相同的格式(即相同顺序的相同数据类型),你可以这样做(可能不是世界上最有效的解决方案,但解决方案):
create table #FK_Names(tab varchar(50))
insert into #FK_Names values ('#tab1')
insert into #FK_Names values ('#tab2')
create table #tab1(id int)
create table #tab2(id int)
insert into #tab1 values (1)
insert into #tab1 values (2)
insert into #tab1 values (3)
insert into #tab2 values (4)
insert into #tab2 values (5)
insert into #tab2 values (6)
/*You want the part following this comment */
create table #temp (id int)
declare tabCursor insensitive cursor for select * from #FK_Names
declare @tabName varchar(100)
open tabCursor
fetch from tabCursor into @tabName
while @@fetch_status = 0
begin
declare @cmd nvarchar(max)
set @cmd ='insert into #temp select * from ' + @tabName
EXECUTE sp_executesql @cmd
fetch next from tabCursor into @tabName
end
close tabCursor
deallocate tabCursor
select * from #temp
我想查询所有表中的列,其名称是从查询中获得的。
像这样:
SELECT [COLUMN_NAME] FROM (SELECT FKTABLE_NAME FROM @temp_table)
虽然这给出了语法错误,有没有办法做到这一点?
假设所有可能的表中的数据都是相同的格式(即相同顺序的相同数据类型),你可以这样做(可能不是世界上最有效的解决方案,但解决方案):
create table #FK_Names(tab varchar(50))
insert into #FK_Names values ('#tab1')
insert into #FK_Names values ('#tab2')
create table #tab1(id int)
create table #tab2(id int)
insert into #tab1 values (1)
insert into #tab1 values (2)
insert into #tab1 values (3)
insert into #tab2 values (4)
insert into #tab2 values (5)
insert into #tab2 values (6)
/*You want the part following this comment */
create table #temp (id int)
declare tabCursor insensitive cursor for select * from #FK_Names
declare @tabName varchar(100)
open tabCursor
fetch from tabCursor into @tabName
while @@fetch_status = 0
begin
declare @cmd nvarchar(max)
set @cmd ='insert into #temp select * from ' + @tabName
EXECUTE sp_executesql @cmd
fetch next from tabCursor into @tabName
end
close tabCursor
deallocate tabCursor
select * from #temp