0

我写了一个从用户临时表中提取用户的游标。然后它找出最新的交易(基于许多因素)并给出输出消息和其他结果。

我无法想出一个主意,将每个用户的这些值存储在某个集合中,然后返回到前端。这是我的代码。

declare @cur1_patientid uniqueidentifier
declare @cur1_dueid uniqueidentifier
declare @cur1_dueamount varchar(10)
declare @cur1_patientname varchar(50)
declare @cur1_paymentday varchar(2)
declare @cur1_monthlyamount varchar(10)
--transaction table variables start
declare @trans_id uniqueidentifier
declare @trans_date datetime
declare @trans_amount float
declare @trans_type varchar(45)
declare @trans_status varchar(45)
declare @trans_patVisitid uniqueidentifier
--transaction table variables end

--declare other variables that will be used - start
declare @output_ARB_Date datetime
declare @output_check_flag bit
declare @output_msg varchar(MAX)
declare @output_difference numeric(3)
--declare other variables that will be used - end
set @output_check_flag=0
set @output_msg=''
set @output_difference=0

declare arb_cur cursor FAST_FORWARD for
select PatientId,dueid,dueamount,patientname,paymentday,monthlyamount from #ARB_Report1 where patientId 
in ('D3658295-51B5-41DF-A1A4-E34B90EBD0F7','27F37F32-4984-47CC-B470-D086192D68FB')

open arb_cur
FETCH NEXT FROM arb_cur INTO @cur1_patientid,@cur1_dueid,@cur1_dueamount,@cur1_patientname,@cur1_paymentday,@cur1_monthlyamount

        WHILE @@FETCH_STATUS = 0        
        BEGIN
        --SELECT @cur1_patientid,@cur1_dueid --shows patientid,dueid of cursor1
            DECLARE trans_cur CURSOR  FOR 
                SELECT id,date,amount,type,status,patientVisitId FROM Transactions WHERE patientId=@cur1_patientid order by date desc
                open trans_cur
                    --fetch transaction table values in local variables
                    FETCH NEXT FROM trans_cur into @trans_id,@trans_date,@trans_amount,@trans_type,@trans_status,@trans_patVisitid                  
                    --reset the variables-start
                    set @output_check_flag=0
                    set @output_msg=''
                    set @output_difference=0
                    set @output_ARB_Date=null
                    --reset the variables-end
                    WHILE (@@FETCH_STATUS = 0)
                    begin

                    if(@trans_type='Reoccuring' and @trans_amount=@cur1_monthlyamount and @trans_patVisitid is null)
                            begin
                                if(@trans_status='Failed')
                                begin
                                    --// some code
                                end

                                else if(@trans_status='Success')
                                begin
                                    --// some code
                                end
                        select @cur1_patientid,@cur1_monthlyamount,@trans_amount,@output_ARB_Date,@output_msg,@output_difference,@cur1_dueamount
                        ------ SOME INSERT STATEMENT HERE TO STORE THESE VALUES INTO A COLLECTION FOR EVERY PATIENT------
                        break
                    end                                             

                    FETCH NEXT FROM trans_cur into @trans_id,@trans_date,@trans_amount,@trans_type,@trans_status,@trans_patVisitid                      
                    end
                CLOSE trans_cur
            DEALLOCATE trans_cur        
FETCH NEXT FROM arb_cur INTO @cur1_patientid,@cur1_dueid,@cur1_dueamount,@cur1_patientname,@cur1_paymentday,@cur1_monthlyamount
END 
CLOSE arb_cur
DEALLOCATE arb_cur
GO
4

0 回答 0