1

エラーが表示されません。SQL Developerがエラーを引用している場所にマークを付けました。私が間違っているところがわかりますか?ZCTA5_2000 は、データを含む有効なテーブルです。

CREATE OR REPLACE TRIGGER zip_trigger
  BEFORE INSERT ON ZCTA5_2000
  FOR EACH ROW
DECLARE
  low_zip NUMBER(5);
  high_zip NUMBER(5);  <---  Error PL/SQL: SQL Statement ignored  ******
BEGIN  <-----Error PL/SQL: ORA-00933: SQL command not properly ended ********

  SELECT LOW_ZIP, HIGH_ZIP FROM ZIPTABLE
  INTO low_zip, high_zip
  WHERE :NEW.STATE = STATE_CODE;  <--- Error PLS-00103: Encountered the symbol "END"... 
    IF :NEW.ZIP < LOW_ZIP OR :NEW.ZIP>HIGH_ZIP
    END IF;
END;
4

3 に答える 3

1

おそらく複数の間違いがあります:

CREATE OR REPLACE TRIGGER zip_trigger
  BEFORE INSERT ON ZCTA5_2000
  FOR EACH ROW
DECLARE
  low_zip NUMBER(5);
  high_zip NUMBER(5);
BEGIN

  SELECT LOW_ZIP, HIGH_ZIP INTO low_zip, high_zip
  FROM ZIPTABLE
  WHERE :NEW.STATE = STATE_CODE;

  IF :NEW.ZIP < LOW_ZIP OR :NEW.ZIP > HIGH_ZIP THEN
    NULL;
  END IF;
END;
/

SELECT再配置されたステートメント (SELECT...INTO...FROMの代わりにSELECT...FROM...INTO) と固定IFステートメント (ブロックTHEN内のキーワードとダミー ステートメント) に注意してください。IF

于 2013-05-21T19:31:05.920 に答える