2

トリガーを作成したい

  • select staffid where dateread = 今月の日付
  • staffID の数を数える
  • その月のそのスタッフのカウントが 5 を超える場合
  • ストップが発行されます。

これが私が私を台無しにしたことです

これが論理的に正しいかどうかを知りたいですか?ここに私のコンパイラログエラーがあります

これは私の必要な結果です: 検針員は、特定の暦月に最大 5 メートルしか読み取ることができません

マイ リーディング テーブルには
StaffID
MeterID
DateRead
ReadinID (PK)があります

エラーテキストは次のとおりです。

Error(5,7): PL/SQL: SQL Statement ignored Error(5,27): 
PL/SQL:ORA-00923: FROM keyword not found where expected 
C:\Users\ChrisPin\AppData\Roaming\SQL Developer\assgn2 sat4.sql Error(5,7): 
PL/SQL: SQL Statement ignored Error(5,27): 
PL/SQL: ORA-00923: FROM keyword not found where expected

トリガーコードは次のとおりです。

CREATE OR REPLACE TRIGGER LIMIT_5_REDINGS
      BEFORE UPDATE OR INSERT ON reading
    FOR EACH ROW
    DECLARE
    ReadingCount  INTEGER;      --# of depts for this employee
      max_read   INTEGER := 5; --max number of depts per employee.
      BEGIN
      select Reading COUNT(*) into ReadingCount
      from (select *
            from Reading
            where to_char(DateRead, 'YYYY-MM') = to_char(sysdate, 'YYYY-MM'))  
      WHERE STAFFID = :NEW.STAFFID;

    IF :OLD.STAFFID = :NEW.STAFFID THEN
        RETURN;
     ELSE
       IF ReadingCount >= max_read THEN
         RAISE_APPLICATION_ERROR (-20000,'Employees are limited to a max of two departments.');
    END IF;
    END IF;
    END;
4

1 に答える 1

2

この列にあります

select Reading COUNT(*) into ReadingCount 

する必要があります

select COUNT(*) into ReadingCount
于 2012-11-18T09:44:33.757 に答える