这样一个存储过程中的循环,怎么获取不完全。
ALTER PROCEDURE [dbo].[proc_AdvReportMutSelect]
@VacationDate datetime,
@dateDiff int
AS
declare @i int
set @i=0
WHILE (@i<@dateDiff)
BEGIN
select
b.CIFNm,b.CustomNm,dd.phone,(SUM(isnull(a.RepayAmount-a.receivableAmount,0))) Repaymoney,
kk.PRepayDate,
b.LoanNm,b.LoanStratDate,b.LoanAmount
from
(
select * from InterestReceive
union all select * from InterestReceivetemp
) a
left join
(
select max(convert(varchar(10),PeriodRepyDate,120)) PRepayDate,ContractNm repd from
(
select * from InterestReceive
union all select * from InterestReceivetemp) aa
group by ContractNm
)
kk
on kk.repd=a.ContractNm
left join OPSInf b on a.ContractNm=b.LoanNm
left join (
select CIFNm,phone from
(
select CIFNm,case LoanType when '个人客户' then
case
when SUBSTRING(PerMobliePhB,0,PATINDEX('%|%',PerMobliePhB))='' then PerMobliePhB
else SUBSTRING(PerMobliePhB,0,PATINDEX('%|%',PerMobliePhB))
end
when '企业客户' then CompanyContactMphontA else '' end phone,SalesDate
from LoanInf where Followstate='已审核'
) c
left join
(select MAX(salesdate) salsd ,CIFNm cfin from LoanInf where
Followstate='已审核' group by CIFNm) b
on
b.cfin=c.CIFNm
where salsd = c.SalesDate
) dd
on dd.CIFNm=a.CIFNm
where convert(varchar(10),a.PeriodRepyDate,120)=convert(varchar(10)
,dateadd(day,@i,@VacationDate),120)
and isnull(a.RepayAmount-a.receivableAmount,0)>0
group by
b.CIFNm,b.CustomNm, dd.phone,kk.PRepayDate,b.LoanNm,b.LoanStratDate,b.LoanAmount
SET @i=@i+1
END
这个存储过程是正确的,但是当我按照红色部分写也是正确的,唯一有问题的地方就是程序读的时候,只能读取到第一条循环记录的值,后面的就读不出来了,奇怪,有人知道么》
比如:
当赋值: @VacationDate ‘2013-12-20’,
@dateDiff 7
这个时候,运行代码,就只能读到1天的数据,但是在SQLSERVER编辑器里测试,就可以读到七天,这个是MSSQLbug么》
------解决方案--------------------帮你改了一下,你再试试:
ALTER PROCEDURE [dbo].[proc_AdvReportMutSelect]
@VacationDate datetime,
@dateDiff int
AS
declare @i int
set @i=0
WHILE (@i<@dateDiff)
BEGIN
select
b.CIFNm,b.CustomNm,dd.phone,(SUM(isnull(a.RepayAmount-a.receivableAmount,0))) Repaymoney,
kk.PRepayDate,
b.LoanNm,b.LoanStratDate,b.LoanAmount
from
(
select * from InterestReceive
union all select * from InterestReceivetemp
) a
left join
(
select max(convert(varchar(10),PeriodRepyDate,120)) PRepayDate,ContractNm repd from
(
select * from InterestReceive
union all select * from I