sql >> Database >  >> RDS >> Oracle

PL/SQL SQL*Plus-instructie genegeerd

De vraag heeft niets te maken met de triggers. Je hebt gewoon een syntaxisfout in de volgende regel:

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

if verklaring en logische operatoren verwachten een booleaanse expressie. PL/SQL heeft geen impliciete conversies van gegevenstypes naar booleaanse waarden.

Dit betekent :NEW.EVENT_ID is geen geldige booleaanse uitdrukking en kan dus niet worden gebruikt met and -operator en daarom mislukt de compilatie met:

PLS-00382: expression is of wrong type

In wezen kan uw probleem worden teruggebracht tot het volgende voorbeeld:

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

Werkvoorbeelden (compileert prima):

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


  1. Gebruik ik Java PooledConnections correct?

  2. Hoe kan ik ervoor zorgen dat emacs sql-mode het mysql-configuratiebestand (.my.cnf) gebruikt?

  3. SQL-query voor wederzijdse vrienden

  4. Stringlijst in SqlCommand via parameters in C#