sql >> Databasteknik >  >> RDS >> Oracle

PLS-00049 BAD BIND VARIABEL

Du syftar på att binda varibaler med en 'A' i början och inget understreck, som :OLD.AWitnessID , men din tabellkolumn är bara WITNESS_ID . Så de matchar inte och genererar detta fel. Du har inte ens en WITNESS_TYPE kolumn.

Sedan i din insert påståenden du har också fel kolumnnamn i granskningstabellen. Du ställer även in variabeln till Update men leta efter UPDATE - kom ihåg att jämförelsen är skiftlägeskänslig för strängvärden.

Detta kompileras med ditt schema:

CREATE OR REPLACE TRIGGER TRG_PLAUDWIT
AFTER INSERT OR DELETE OR UPDATE ON PL_WITNESS
FOR EACH ROW
DECLARE
  v_trigger_task varchar2(10);
BEGIN
  IF UPDATING THEN
    v_trigger_task := 'UPDATE';
  ELSIF DELETING THEN
    v_trigger_task := 'DELETE';
  ELSIF INSERTING THEN
    v_trigger_task := 'INSERT';
  ELSE
    v_trigger_task := NULL;
  END IF;

  IF v_trigger_task IN ('DELETE','UPDATE') THEN
    INSERT INTO PLAUDWIT (AUD_AWitnessID, AUD_AWitnessType, AUDIT_USER,
      AUDIT_DATE, AUDIT_ACTION)
    VALUES (:OLD.Witness_ID, :OLD.FK1_WITNESS_TYPE_ID, UPPER(v('APP USER')),
      SYSDATE, v_trigger_task);
  ELSE    
    INSERT INTO PLAUDWIT (AUD_AWitnessID, AUD_AWitnessType, AUDIT_USER,
      AUDIT_DATE, AUDIT_ACTION)
    VALUES (:NEW.Witness_ID, :NEW.FK1_WITNESS_TYPE_ID, UPPER(v('APP USER')),
      SYSDATE, v_trigger_task);
  END IF;
END TRG_PLAUDWIT;
/

SQL-fiol som inte visar några kompileringsfel .




  1. Alternativ till sql-server TOP i oracle

  2. Köra en SELECT-fråga med en Ansible-uppgift

  3. Hur CTE kan hjälpa till att skriva komplexa, kraftfulla frågor:ett prestationsperspektiv

  4. SQLAlchemy kan inte ansluta till Postgresql på localhost