在SQL中首先使用一个游标:作用是查询出一些数据,这些数据留待下面游标中的查询语句中作为条件使用。假如用变量@id表示查询到的所有id数据集,
下面我在上面的的游标中
while (@@fetch_status=0)
begin
在这我又创建一个游标,它是用先前的@id作为条件来查询只有一条记录的数据
然后入库
end
本来@id它有好多数据集,这样入库的数据也好多,但现在没有一条数据入库,
...全文
1143打赏收藏
游标嵌套使用问题(在线)
在SQL中首先使用一个游标:作用是查询出一些数据,这些数据留待下面游标中的查询语句中作为条件使用。假如用变量@id表示查询到的所有id数据集, 下面我在上面的的游标中 while (@@fetch_status=0) begin 在这我又创建一个游标,它是用先前的@id作为条件来查询只有一条记录的数据 然后入库 end 本来@id它有好多数据集,这样入库的数据也好多,但现在没有一条数据入库,
代码大致如下:
declare curPass cursor for
select Distinct a.PassTime,a.DoorID,a.Door ,a.EventCH,a.EventID from(select distinct PassTime,DoorID,Door,EventCH,EventID FROM dbo.tblOriginalLog,
dbo.tblDoor,tblEventType where tblOriginalLog.EventType=tblEventType.EventID
and tblDoor.ID=tblOriginalLog.DoorID) a INNER JOIN tblDoor d on a.DoorID=d.ID
--可以取出好多数据
open curPass
fetch next from curPass into @PassTime,@DoorID,@Door,@FileType,@EventID
set @PassTimeStr=''
while (@@fetch_status=0)
begin--24
declare curPass1 cursor for
select a.StaffID,case when a.StaffID>0 then b.Code else a.EnterID end as
StaffCode,a.EnterID,b.Name StaffName,c.Name as OrgName from(select distinct PassTime,DoorID,StaffID,EnterID,Door,EventCH,EventID FROM dbo.tblOriginalLog,dbo.tblDoor,tblEventType where tblOriginalLog.EventType=tblEventType.EventID and tblDoor.ID=tblOriginalLog.DoorID) a left outer join dbo.tblStaff b on
a.StaffID=b.id INNER JOIN tblOrg c on b.OrgID=c.ID INNER JOIN tblDoor d on a.DoorID=d.ID and a.PassTime=@PassTime and a.DoorID=@DoorID and a.EventID=@EventID
open curPass1
fetch next from curPass1 into @StaffID,@StaffCode,@EnterID,@StaffName,@OrgName
while (@@fetch_status=0)
begin
insert into @temp values(@PassTime,@DoorID,@StaffID,@Door,@StaffCode,@EnterID,@StaffName,@OrgName,@FileType,@EventID)
fetch next from curPass1 into @StaffID,@StaffCode,@EnterID,@StaffName,@OrgName
end
close curPass1
deallocate curPass1
end
close curPass
deallocate curPass