Неявная переменная курсора Oracle отображается как Ноль вместо действительного значения во вложенном курсоре - PullRequest
0 голосов
/ 13 октября 2018

Программа использует неявный курсор, а также вложенный курсор.А также я получаю с помощью ROWTYPE.Но кое-как, как это не получение значения.Я считаю, что это должно быть из-за его вложенного курсора, поэтому он не получает значение.(т. е. в приведенном ниже пункте во 2-м курсоре, если я не получаю значение, что-то идет не так) ..

Курсор объявлен как показано ниже

cursor c1(begin_date varchar2, end_date varchar2)
IS
  SELECT empno from table1 where report_DATE between begin_date and end_date;

cursor c2(emp_num number, begin_date varchar2, end_date varchar2)
IS
  SELECT sum(tot_amt) as e_tot_amt 
  from table2 where report_DATE between begin_date and end_date
  and empno = emp_num;

cursor c3(emp_num number, begin_date varchar2, end_date varchar2)
IS
  SELECT sum(adj_amt) as e_adj_amt 
  from table3 where report_DATE between begin_date and end_date
  and empno = emp_num;

gr1      c1%ROWTYPE;
gr2      c2%ROWTYPE;
gr3      c3%ROWTYPE;

Ниже приведен код

 gr1:=NULL;

 for lr in c1(begin_date, end_date)
 loop
       gr2:= lr;
       get_tot_amt;
       get_adj_amt;
       final_amt := g2.e_tot_amt + g3.e_adj_amt;
       write the values
  end loop      

  procedure get_tot_amt
  is 
  begin
        gr2:=NULL;
        for lr in c2(gr1.emp_num, gr1.begin_date, gr1.end_date)
        loop
             gr2:=lr;
        end loop;     
  end get_adj_amt

Problem is the Final_amount value is not calculating correctly. It showing as 0, but when i give the empno its giving the value.  Please advise.
  procedure get_adj_amt
  is 
  begin
        gr3:=NULL;
        for lr in c3(gr1.emp_num, gr1.begin_date, gr1.end_date)
        loop
             gr3:=lr;
        end loop;     
  end get_tot_amt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...