【发布时间】:2013-10-15 09:35:31
【问题描述】:
我在执行触发器时遇到以下错误:
SQL Error: ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "Test.ADD_DUMMY_RULE", line 13
create or replace
TRIGGER "ADD_DUMMY_RULE"
BEFORE DELETE ON testTable
FOR EACH ROW
WHEN (
old.product_id != 0
)
DECLARE
pcnt NUMBER(14);
BEGIN
pcnt := 0;
trig_pkg.rowIndex := trig_pkg.rowIndex + 1;
-- STORING IMAGE_ID
trig_pkg.old_image_id := :OLD.image_id;
IF (trig_pkg.rimage_id IS NOT NULL) THEN
FOR i IN 1..(trig_pkg.hold_imid_tablsize) LOOP
IF (trig_pkg.old_image_id = trig_pkg.rimage_id(i)) THEN
pcnt := pcnt + 1;
END IF;
END LOOP;
END IF;
END;
请提出问题的原因。
编辑
数据类型:
trig_pkg.rowIndex - Number
trig_pkg.rimage_id - IS TABLE OF INTEGER INDEX BY binary_integer;
trig_pkg.hold_imid_tablsize- NUMBER(14)
【问题讨论】:
-
rimage_id 有什么类型?
-
@schurik,rimage_id 类型为数字
-
trig_pkg.hold_imid_tablsize是什么类型?更重要的是,您是否有多个触发器 - 代码是针对ADD_DUMMY_RULE_,错误是针对ADD_DUMMY_RULE(没有尾随下划线) - 是您在问题中介绍的内容,还是您的内容?真的看到了吗? -
@AlexPoole,是的,这是一个错字..trig_pkg.hold_imid_tablsize 是数字
-
trig_pkg.hold_imid_tablsize是否总是有一个值,或者在某些时候它可以是null? (不确定 1..null 是否会导致 ORA-06502?)