表中红框是表名,前面的FINTERID是关键值。要求通过关键值从各个表中取几个数据如单据号、日期等。
drop table ##temp
--建临时表
create table ##temp ( finterid int)
--设置参数
declare @fid int,
@finterid int ,
@ftablename varchar(20)
--建游标
declare ICOrderAlter_cursor cursor
for(select fid,finterid,ftablename from ICOrderAlter where FBillType=71 or FBillType=81 )
--传参
open ICOrderAlter_cursor
fetch next from ICOrderAlter_cursor into @fid,@finterid,@ftablename
while @@FETCH_STATUS=0
--执行并将数据插入临时表
begin
select @ftablename=ftablename,@finterid=FInterID from ICOrderAlter where fid=@fid
insert into ##temp exec ('select finterid from ' + @ftablename + ' where finterid= '+@finterid)
fetch next from ICOrderAlter_cursor into @fid,@finterid,@ftablename
end
--关闭游标
close ICOrderAlter_cursor
--释放游标
deallocate ICOrderAlter_cursor
select * from ##temp
说明一下,最后的查询结果不是我想要的,由于各个表的表结构不一致,只能找个相同的字段说明 一下。记录这个只是把游标的使用过程记录下来。