【发布时间】:2012-03-21 00:48:35
【问题描述】:
我遇到了这个过程的问题。我一直收到的错误是:
dbms_warning.set_warning_setting_string 'ENABLE:ALL', succeeded.
PROCEDURE promo_ship_sp compiled
Warning: execution completed with warning
我已尝试设置错误报告,以便获得更多信息,但没有其他任何显示。 SELECT * FROM BB_PROMOLIST; 显示提取的结果为 0 行,所以它不能是插入 ID 问题,可以吗?我已经提交了,它仍然无法成功编译。
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');
GOOD Catch 堆栈溢出,但在我的实际代码中不是这样。我禁用了约束,然后在没有警告的情况下编译,然后再次启用约束,可以随意执行多次。有点奇怪的错误。希望这可以帮助某人。
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');
【问题讨论】:
-
SO 上的语法高亮显示了问题所在。您在
'Jan周围缺少'。不需要commit一个包。 -
如果在启用约束的情况下再次编译会出现错误?
-
你用什么客户端来编译程序?
-
没有表定义很难知道,但警告可能是:
PLW-07202: bind type would result in conversion away from column typedocs.oracle.com/cd/B19306_01/server.102/b14219/… -
而且
v_dt date := tmp_id;甚至不应该编译,没有声明类型。 (除非自 10g 以来情况发生了变化。)
标签: sql oracle stored-procedures oracle10g