2014-10-05 3 views
0

다음과 같은 컴파일 오류가 발생합니다. SET 키워드 누락, SQL 문 무시 (2 행), 다음 중 하나가 예상 될 때 "파일 끝"기호가 발생했습니다. begin case declare 끝 예외 goto에 대 한 출구 루프 모드 null pragma 제기 반환 선택하는 동안 업데이트 < < 계속 닫기 가져 오기 잠금 가져 오기 열기 롤백 저장 점 설정 sql 실행 forall 전체 병합 파이프 제거 (줄 9 (끝까지 검색했습니다. 수십 가지 예가 있지만 컴파일 오류를 일으키는 어떤 종류의 종합적인 오류가 있는지 알 수 없습니다.오라클 트리거 컴파일 오류

CREATE OR REPLACE TRIGGER CHANGE_RENTAL_RATE 
BEFORE INSERT ON film FOR EACH ROW 
BEGIN 
UPDATE film 
SELECT * 
SET rental_rate = CASE special_features 
       WHEN 'Trailers' THEN rental_rate := :new.rental_rate + 0.1 
       WHEN 'Commentaries' THEN rental_rate := new.rental_rate + 0.5 
       WHEN 'Deleted Scenes' THEN rental_rate := new.rental_rate + 0.2 
       WHEN 'Behind the Scenes' THEN rental_rate := new.rental_rate - 0.2 
END; 
/
+0

'선택 *'제거; 그것은'update' 문장의 일부가 아닙니다. –

답변

1

film에있는 모든 행에 영향을주기 때문에 의미가 있습니다. 당신은 "전에"방아쇠를 당겼습니다. 아마 원하는 :

CREATE OR REPLACE TRIGGER CHANGE_RENTAL_RATE 
BEFORE INSERT ON film FOR EACH ROW 
BEGIN 
    if :new.special_features = 'Trailers' THEN :new.rental_rate := :new.rental_rate + 0.1; 
    elsif :new.special_features = 'Commentaries' THEN :new.rental_rate := :new.rental_rate + 0.5; 
    elsif :new.special_features = 'Deleted Scenes' THEN :new.rental_rate := :new.rental_rate + 0.2; 
    elsif :new.special_features = 'Behind the Scenes' THEN :new.rental_rate := :new.rental_rate - 0.2; 
    else :new.special_features := NULL 
    end if; 
END;