2016-10-18 3 views
-1

iveはこのトリガーのほとんどを処理していますが、これを正しく実装する方法はわかりませんが、そこでは北と東をそれぞれ評価してみてください。if else文を含むトリガー

CREATE OR REPLACE TRIGGER TR_SIGHTING_DESC 
BEFORE INSERT ON sightings 
FOR EACH ROW 
DECLARE bn birds.bird_name%type; 
DECLARE NS VARCHAR2(10), EW VARCHAR2(10); 
BEGIN 
IF :new.latitude >= 0 THEN 
    EW := 'East' 
ELSE 
    EW := 'West' 
END IF; 

IF :new.longitude >= 0 THEN 
    NS := 'North' 
ELSE 
    NS := 'South' 
END IF; 
SELECT bird_name 
INTO bn 
from birds 
where bird_id = :new.bird_id;  
    :new.description := 'A bird of the species ' 
         || bn 
         || ' was spotted in the ' 
         || EW|| '-'|| NS 
         || ' part of the observation area'; 
END; 
/

INSERT INTO sightings (spotter_id, bird_id, latitude, 
longitude, sighting_date) 
VALUES (1024, 512, -25.6, 153, '09-MAR-2016'); 

if then文、およびトリガ一般のためのSQLの非常に新しいです。どんな助けも素晴らしいだろう!

+0

問題は何ですか?エラーがありますか?もしそうなら、どんなエラー? – Aleksej

+0

それはちょうどその失敗の再確認 – 101ldaniels

答えて

1

行方不明カンマと2 DECLARE S:

CREATE OR REPLACE TRIGGER TR_SIGHTING_DESC 
    BEFORE INSERT 
    ON sightings 
    FOR EACH ROW 
DECLARE 
    bn birds.bird_name%TYPE; 
    NS VARCHAR2 (10); 
    EW VARCHAR2 (10); 
BEGIN 
    IF :new.latitude >= 0 
    THEN 
     EW := 'East'; 
    ELSE 
     EW := 'West'; 
    END IF; 

    IF :new.longitude >= 0 
    THEN 
     NS := 'North'; 
    ELSE 
     NS := 'South'; 
    END IF; 

    SELECT bird_name 
    INTO bn 
    FROM birds 
    WHERE bird_id = :new.bird_id; 

    :new.description := 
     'A bird of the species ' 
     || bn 
     || ' was spotted in the ' 
     || EW 
     || '-' 
     || NS 
     || ' part of the observation area'; 
END; 
/
+0

はい、2つの宣言が確かに問題だったことを伝え続けます – pahariayogi