У меня есть 2 процедуры (A, B) в Oracle 9i. В отдельных случаях все они работают нормально. Но я не могу выполнить процедуру C, которая вызывает A, которая, в свою очередь, вызывает B. Я помещаю dbms_output.put_line до того, как C вызовет A, до того, как A вызовет B и один в B. Как-то работает только первая put_line. Каковы возможные причины, по которым это не работает? Спасибо,Почему процедура не может вызвать другую в Oracle
CREATE OR REPLACE PROCEDURE C (num in number)
as
begin
for r in (select col1 from Table1)
loop
dbms_output.put_line ('Inside C');
A(r.col1);
end loop;
end;
CREATE OR REPLACE PROCEDURE A (var1 IN varchar2)
AS
v1 varchar2;
cursor c1(c_var in varchar2) is
select col1 from table2 where col2=c_var;
BEGIN
open c1(var1);
loop
fetch c1 into v1;
exit when c1%notfound;
dbms_output.put_line ('Inside A');
B(v1);
end loop;
close c1;
END;
Вы пытались поставить dbms_output перед тем, как открыть курсор в A, чтобы убедиться, что вы даже попадаете в цикл? – climbage