Программа использует неявный курсор, а также вложенный курсор.А также я получаю с помощью 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