當創建下面的觸發器時,我得到了低於錯誤:任何線索如何解決它?使用案例來分配值
13 32 PLS-00103:期待以下某項時遇到符號「WHEN」:。 (* @%& = - + < />在國防部是不餘REM然後<>或=或〜=> = < = <>和或類似
create or replace trigger "CONVEYANCE_REQUEST_T3"
BEFORE
insert or update on "CONVEYANCE_REQUEST"
for each row
begin
CASE
when :NEW.REGULAR_TRAVEL_MODE = '2 WHEELER' THEN
BEGIN
CASE
when :NEW.WAY_TYPE = 'ONE WAY' THEN
SELECT RATE_PER_KM * :NEW.REGULAR_DISTANCE_ONEWAY * 1 INTO :NEW.REGULAR_AMOUNT FROM CONVEYANCE_RATE WHERE TRAVEL_MODE = :NEW.REGULAR_TRAVEL_MODE;
WHEN :NEW.WAY_TYPE ='TWO WAY' THEN
SELECT RATE_PER_KM * :NEW.REGULAR_DISTANCE_ONEWAY * 2 INTO :NEW.REGULAR_AMOUNT FROM CONVEYANCE_RATE WHERE TRAVEL_MODE = :NEW.REGULAR_TRAVEL_MODE;
END CASE;
END;
when :NEW.REGULAR_TRAVEL_MODE WHEN = '4 WHEELER' THEN
BEGIN
CASE
when :NEW.WAY_TYPE = 'ONE WAY' THEN
SELECT RATE_PER_KM * :NEW.REGULAR_DISTANCE_ONEWAY * 1 INTO :NEW.REGULAR_AMOUNT FROM CONVEYANCE_RATE WHERE TRAVEL_MODE = :NEW.REGULAR_TRAVEL_MODE;
WHEN :NEW.WAY_TYPE ='TWO WAY' THEN
SELECT RATE_PER_KM * :NEW.REGULAR_DISTANCE_ONEWAY * 2 INTO :NEW.REGULAR_AMOUNT FROM CONVEYANCE_RATE WHERE TRAVEL_MODE = :NEW.REGULAR_TRAVEL_MODE;
END CASE;
END;
END CASE;
END;
試試到底是該觸發器應該怎麼辦? – Mureinik
你的END數量已經搞砸了。每個CASE語句需要一個END,而觸發器代碼塊的BEGIN需要一個END。你可能在你的CASE語句中也有一個你不需要的BEGIN。 http://www.techonthenet.com/oracle/functions/case.php –
您對CASE聲明的構造對我來說看起來不對。看看我上面評論中的正確書寫的鏈接和語法大綱。 –