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

PL/SQL SQL*Plus-sætning ignoreret

Spørgsmålet har intet at gøre med udløserne. Du har simpelthen en syntaksfejl i følgende linje:

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

if erklæring og logiske operatorer forventer et boolesk udtryk. PL/SQL har ikke implicitte datatypekonverteringer til booleske værdier.

Det betyder :NEW.EVENT_ID er ikke et gyldigt boolesk udtryk, så det kan ikke bruges med and -operator og derfor mislykkes kompileringen med:

PLS-00382: expression is of wrong type

Grundlæggende kan dit problem indsnævres til følgende eksempel:

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

Arbejdseksempler (kompilerer fint):

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. Vis fornavnsdata baseret på første bogstav

  2. datetime felt i solr skema

  3. Sådan bruges GROUP BY efter Having-sætningen Mysql

  4. Hvordan udfylder man datohuller i MySQL?