Oracle
 sql >> Database >  >> RDS >> Oracle

Istruzione PL/SQL SQL*Plus ignorata

La domanda non ha nulla a che fare con i trigger. Hai semplicemente un errore di sintassi nella riga seguente:

IF :NEW.EVENT_ID AND :NEW.DESCRIPTION IS NOT NULL THEN

if dichiarazione e gli operatori logici si aspettano un'espressione booleana. PL/SQL non ha conversioni implicite del tipo di dati in valori booleani.

Questo significa :NEW.EVENT_ID non è un'espressione booleana valida, quindi non può essere utilizzata con and -operatore e quindi la compilazione fallisce con:

PLS-00382: expression is of wrong type

In sostanza, il tuo problema può essere ristretto al seguente esempio:

declare
  v_foo number;
begin
  -- compilation fails because a number (or any other non-boolean
  -- data type) is not a boolean expression.
  if v_foo
  then
    null;
  end if;
end;
/

Esempi di lavoro (compila bene):

declare
  v_foo number;
  function to_boolean(p_x in number) return boolean is
  begin
    return p_x > 0;
  end;
begin
  -- a function returns a boolean value
  if to_boolean(v_foo)
  then
    null;
  end if;

  -- a > operator returns a boolean value
  if v_foo > 0
  then
    null;
  end if;

  -- is null operator returns a boolean value
  if v_foo is null
  then
    null;
  end if;
end;
/