[英]ORA-06502 PL/SQL: numeric or value error: character to number conversion error;
[英]Getting ORA-06502: PL/SQL: numeric or value error: character to number conversion error in SQL trigger
我在具有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)。
我試圖在OLD_VALUE和NEW_VALUE varchar2列中插入OFFSET列中的數值,並得到此錯誤。
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;
您能否為此提出建議,以便我可以相應地修改上述觸發器。
提前感謝您的幫助。
問候帕尼
正如Gaj所指出的那樣,問題出在您的NVL上-您試圖將非數字字符串與數字進行比較,這是行不通的。
盡管您可以更改NVL來檢查您永遠不會遇到的數值,但是最好將條件更改為:
:OLD.OFFSET != :NEW.OFFSET
or (:OLD.OFFSET is not null and :NEW.OFFSET is null)
or (:OLD.OFFSET is null and :NEW.OFFSET is not null)
這樣,您就不必組成一個實際數值永遠不可能達到的幻數; 假設這個數字甚至存在!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.