我在具有MIH_TRIGGER的表上的Web方法适配器中遇到以下错误 .
(65000/6502)ORA-06502:PL / SQL:数字或值错误:字符到数字转换错误ORA-06512:在“B2B_OPS_BUILD_ADMIN.MIH_TRIGGER”,第2行ORA-04088:执行触发器期间出错'B2B_OPS_BUILD_ADMIN.MIH_TRIGGER “
下面是MIH_TRIGGER前导引,它将在更新OFFSET列时将数据从OPS_BUILD_MIH表更新为OPS_BUILD_AUDITLOG表 .
OPS_BUILD_MIH中的OFFSET列为NUMBER
OPS_BUILD_AUDITLOG中的OLD_VALUE和NEW_VALUE列是VARCHAR2(100) .
我正在尝试将OFFSET列中的数值插入OLD_VALUE和NEW_VALUE varchar2列并获取此错误 .
create or replace TRIGGER "B2B_OPS_BUILD_ADMIN"."MIH_TRIGGER"
AFTER UPDATE OF OFFSET
ON OPS_BUILD_MIH
FOR EACH ROW
BEGIN
if ( nvl(:OLD.OFFSET,'xYz#@!0') != nvl(:NEW.OFFSET,'xYz#@!0')) then
INSERT INTO OPS_BUILD_AUDITLOG
(TABLE_NAME,
COLUMN_NAME,
OLD_VALUE,
NEW_VALUE,
UPDATED_BY,
UPDATED_DTM,
UUID)
VALUES
('OPS_BUILD_MIH',
'OFFSET',
:OLD.OFFSET,
:NEW.OFFSET,
:NEW.LAST_UPDATED_BY,
:NEW.LAST_UPDATED_DTM,
:OLD.MIH_ID);
end if;
END;
你能否为此建议修复,以便我可以相应地修改上面的触发器 .
提前感谢您的帮助 .
关心Phani
1 回答
正如Gaj已经指出的那样,问题在于您的NVL - 您正在尝试将非数字字符串与数字进行比较,这将无效 .
虽然您可以更改NVL以检查您将永远不会遇到的数值,但将条件更改为:
这样,你就不必编造一个你的实际值永远不可能的幻数;假设这样的数字甚至存在!