2011-11-13 4 views
1

私は、従業員が重複する2つのフライトに割り当てられているかどうかを確認するトリガーを作成しています。質問からのデータを処理していないオラクル

それはのようになります。誰もが、私はそこに条件ロジックをコーディングする必要がありますどのように私を助けることができる

select flight_id from flight 
where arrival_time > :new.departure_time 
and departure_time < :new.arrival_time; 

if flight_id is empty 
    [do nothing] 
if flight_id exists 
    [raise application error] 

?これは初めてのoracle(大学の授業)で働いています。

答えて

2

SELECT ... INTOはあなたの友人です。それは例外を発生させ、キャッチし、何もしない、そうでなければあなた自身のエラーを起こすでしょう。

select flight_id into v 
from flight 
where arrival_time > :new.departure_time 
and departure_time < :new.arrival_time; 
raise_application_error(-20000, 'not good'); 
exception 
when NO_DATA_FOUND 
    then return 1 
when others 
    then raise_application_error(-20011,'really good'); 
1
DECLARE 
    V_some_varible NUMBER; 
BEGIN 
    Seclect 1 into v_some_varible from dual where 1 = 0; 
EXCEPTION -- exception handlers begin 
    WHEN NO_DATA_FOUND THEN 
     INSERT INTO errors (message) VALUES ('no data found'); 
    WHEN OTHERS THEN -- handles all other errors 
     ROLLBACK; 
END; 

データが見つからないことを強制するには、1 = 0に注意してください。この例は、エラー・テーブルへの挿入を除いて、どのOracleデータベースでも動作するはずです。

関連する問題