У меня проблема с этой процедурой. Ошибка, которую я продолжаю получать:
dbms_warning.set_warning_setting_string 'ENABLE:ALL', succeeded.
PROCEDURE promo_ship_sp compiled
Warning: execution completed with warning
Я попытался установить отчет об ошибках, чтобы получить немного больше информации, но больше ничего не появляется. SELECT * FROM BB_PROMOLIST;
показывает результаты в 0 выбранных строках, так что это не может быть проблемой с идентификатором вставки, не так ли? Я отправил его, и он все еще не может успешно скомпилироваться.
set serveroutput on;
CALL DBMS_WARNING.set_warning_setting_string ('ENABLE:ALL', 'SESSION');
create or replace procedure promo_ship_sp
(
tmp_id in date
)
IS
v_dt date := tmp_id;
v_Promo_flag bb_promolist.promo_flag%type;
cursor cur_select is
select idshopper, dtcreated
from bb_basket
where dtcreated < v_dt
order by idshopper;
BEGIN
for rec_something in cur_select loop
insert into bb_promolist (idshopper, month, year, promo_flag, used) values
(rec_something.idshopper, 'JAN', '2010', 1, 'N');
dbms_output.put_line(rec_something.idshopper || ' ' ||rec_something.dtcreated);
end loop;
END;
/
show errors;
execute promo_ship_sp('15-FEB-07');
ХОРОШО Поймать переполнение стека, но это не было в моем реальном коде. Я отключил ограничения и затем скомпилировал без предупреждений, а затем снова включил ограничения и могу выполнять их столько раз, сколько пожелаю. Какая-то странная ошибка. Надеюсь, это кому-нибудь поможет.
set serveroutput on;
CALL DBMS_WARNING.set_warning_setting_string ('ENABLE:ALL', 'SESSION');
create or replace procedure promo_ship_sp
(
tmp_id in date
)
IS
v_dt date := tmp_id;
v_Promo_flag bb_promolist.promo_flag%type;
cursor cur_select is
select idshopper, dtcreated
from bb_basket
where dtcreated < v_dt
order by idshopper;
BEGIN
delete from bb_promolist;
for rec_something in cur_select loop
insert into bb_promolist (idshopper, month, year, promo_flag, used) values
(rec_something.idshopper, to_char(rec_something.dtcreated, 'MON'), to_char(rec_something.dtcreated, 'YYYY'), 1, 'N');
end loop;
END;
/
show errors;
execute promo_ship_sp('15-FEB-07');