on 2014 Aug 07 3:19 PM
despite the tested the select for the cursor does return rows but something inside the fetch loop went wrong :
begin declare @minValuation_dt date declare @acct_grp_id int declare @acct_id int declare @subAcct_id int Declare @Valuation_dt DATE // Declare @Acct_grp_ID INTEGER // Declare @subAcct_ID INTEGER Declare @Value_amt T__money_2 Declare @Equity_amt T__money_2 Declare @Cash T__money_2 Declare @Sub_Acct_Alias_dd VARCHAR(24) Declare @Qty_Chk DECIMAL(12,4) Declare @Issue_Cnt_Chk INTEGER Declare @Book_val_chk T__money_2 Declare @PnL_ttl T__money_2 Declare @Load_status CHAR(4) declare @prev_dt date declare @Equity_Prev T__money_2 declare @Cash_prev T__money_2 declare @Qty_prev DECIMAL(12,4) declare @Issue_prev integer declare @book_prev T__money_2 declare @i int declare csr_latestValuatn CURSOR for SELECT * FROM dba.PF_DailyValuation as a where (@acct_grp_id is null or a.acct_grp_id = @acct_grp_id) and (@acct_id is null or a.subacct_id in (select subAcct_ID from dba.subAcct where acct_id = @acct_id)) and (@subAcct_id is null or a.subAcct_id = @subAcct_id) and valuation_dt>= (select max(b.valuation_dt) FROM dba.PF_DailyValuation as b where b.acct_grp_id=a.acct_grp_id and b.subAcct_ID=a.subAcct_ID and (@minValuation_dt is null or b.valuation_dt >=@minValuation_dt) ) order by acct_grp_id, subAcct_ID FOR READ ONLY set @i=0 SELECT a.*, p.Valuation_dt as prev_dt, p.Equity_amt as Equity_Prev, p.Cash as Cash_prev, p.Qty_Chk as Qty_prev, p.Issue_Cnt_Chk as Issue_prev, p.Book_val_chk as book_prev into #LatestValuatn from dba.PF_DailyValuation as a, dba.PF_DailyValuation as p where 1=2 open csr_latestValuatn fetch next csr_latestValuatn into @Valuation_dt, @Acct_grp_ID, @subAcct_ID, @Value_amt, @Equity_amt, @Cash, @Sub_Acct_Alias_dd, @Qty_Chk, @Issue_Cnt_Chk,@Book_val_chk, @PnL_ttl, @Load_status IF @@FETCH_STATUS <> 0 PRINT ' <<none>>' WHILE @@FETCH_STATUS = 0 BEGIN set @i=@i+1 /* find the latest record prior to @valuation_dt where there there is difference in cash, issue count, qty, baook value: */ select p.Valuation_dt as prev_dt, p.Equity_amt as Equity_Prev, p.Cash as Cash_prev, p.Qty_Chk as Qty_prev, p.Issue_Cnt_Chk as Issue_prev, p.Book_val_chk as book_prev into @prev_dt, @Equity_Prev, @Cash_prev, @Qty_prev, @Issue_prev, @book_prev from dba.PF_DailyValuation as p where p.Acct_grp_ID=@Acct_grp_ID and p.subAcct_ID=@subAcct_ID and p.valuation_dt = (select max(b.Valuation_dt) from dba.PF_DailyValuation as b where b.Valuation_dt<@Valuation_dt and b.Acct_grp_ID=@Acct_grp_ID and b.subAcct_ID=@subAcct_ID and (b.Equity_amt<>@Equity_amt or b.Cash<>@Cash or b.Qty_Chk<>@Qty_Chk or b.Issue_Cnt_Chk<>@Issue_Cnt_Chk or b.Book_val_chk<>@Book_val_chk) ) select @Valuation_dt as Valuation_dt, @Acct_grp_ID as Acct_grp_ID, @subAcct_ID as subAcct_ID, @Value_amt as Value_amt, @Equity_amt as Equity_amt, @Cash as Cash, @Sub_Acct_Alias_dd as Sub_Acct_Alias_dd, @Issue_Cnt_Chk as Issue_Cnt_Chk, @Book_val_chk as Book_val_chk, @PnL_ttl as PnL_ttl, @Load_status as Load_status, @prev_dt as prev_dt, @Equity_Prev as Equity_Prev, @Cash_prev as Cash_prev, @Qty_prev as Qty_prev, @Issue_prev as Issue_prev, @book_prev as book_prev into #LatestValuatn fetch next csr_latestValuatn into @Valuation_dt, @Acct_grp_ID, @subAcct_ID, @Value_amt, @Equity_amt, @Cash, @Sub_Acct_Alias_dd, @Qty_Chk, @Issue_Cnt_Chk,@Book_val_chk, @PnL_ttl, @Load_status END close csr_latestValuatn deallocate csr_latestValuatn select @i,* from #LatestValuatn end
Request clarification before answering.
I was tempted to delete this thread but here is what I found to be workable
use insert into with explicit column names and values:
insert into #LatestValuatn (Valuation_dt, Acct_grp_ID, subAcct_ID, Value_amt, Equity_amt, Cash, Sub_Acct_Alias_dd, qty_Chk, Issue_Cnt_Chk, Book_val_chk, PnL_ttl, Load_status, prev_dt, Cash_prev, Qty_prev, Issue_prev, book_prev) values(@Valuation_dt, @Acct_grp_ID, @subAcct_ID, @Value_amt, @Equity_amt, @Cash, @Sub_Acct_Alias_dd, @qty_Chk, @Issue_Cnt_Chk, @Book_val_chk, @PnL_ttl, @Load_status, @prev_dt, @Cash_prev, @Qty_prev, @Issue_prev, @book_prev) then the rows get retained on completion of while loop
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
82 | |
29 | |
9 | |
8 | |
7 | |
7 | |
7 | |
6 | |
6 | |
5 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.