Oracle
 sql >> Base de données >  >> RDS >> Oracle

Instruction PL/SQL SQL*Plus ignorée

La question n'a rien à voir avec les déclencheurs. Vous avez simplement une erreur de syntaxe à la ligne suivante :

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

if déclaration et les opérateurs logiques attendent une expression booléenne. PL/SQL n'a pas de conversions de type de données implicites en valeurs booléennes.

Cela signifie :NEW.EVENT_ID n'est pas une expression booléenne valide, elle ne peut donc pas être utilisée avec and -operator et donc la compilation échoue avec :

PLS-00382: expression is of wrong type

Essentiellement, votre problème peut être réduit à l'exemple suivant :

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;
/

Exemples de travail (compilation correcte) :

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;
/