由于许多人问我要达到什么目标 - 这是一个解释。
我必须向 Benfits 运营商提供文件馈送。文件格式为 Member1 Record、Benefits1 记录、Benefits2 记录等。Member2 Record、Benefits1、Benefits2 等。
我这样做的方法是获取所有成员的记录并将其放入@member table
. 然后我得到了所有成员的所有福利并放入@Medical_nonHMO table
.
然后我循环遍历,获取第一条@member
记录(只有一条记录)和相应的@Medical_nonHMO
记录(可能超过 1条)。然后我从中获取第二个成员记录@member
和相应的福利记录@Medical_nonHMO
,依此类推。
是的,我已经检查了 的值@count
。
Select Max(idx) and select count(*) are returning the same value
我不确定如何使用游标来实现这一点。
我有大约 300 条会员记录和大约 400 多条福利记录。它适用于大约 200 条记录,然后突然结束,有时会出现 -'Out of Memory' 错误。
我有以下循环。
@member,@medical_nonHMO
是温度。填充有值的表。
@tempcounttable
有 304 行,即@count
我正在遍历每个会员和会员福利
我面临的问题是,即使在执行查询之后,它也只循环了 174 次。
'Out of Loop' 不会被打印出来。
但这种情况只是偶尔发生。有时循环完全执行并打印“Out of Loop”
DECLARE @tempCounttable TABLE
(
idx smallint Primary Key IDENTITY(1,1),
SSN varchar(9),
SSN_dep varchar(9),
fname varchar(25)
)
INSERT into @tempCounttable
select SubscriberSSN, -- Employee SSN
MemberSSN, -- Dependent SSN
FirstName
from @member
select @count = MAX(idx) from @tempCounttable
Set @i = 1
While(@i <= @count)
Begin
select * from @member
where SubscriberSSN = (select SSN from @tempCounttable where idx = @i)
and MemberSSN = (select SSN_dep from @tempCounttable where idx = @i)
and FirstName = (select fname from @tempCounttable where idx = @i)
select * from @Medical_nonHMO
where SSN = (select SSN from @tempCounttable where idx = @i)
and SSN_dependent = (select SSN_dep from @tempCounttable where idx = @i)
and fname = (select fname from @tempCounttable where idx = @i)
Set @i = @i + 1
select @i
end
select 'OUT OF LOOP'