sql >> Databáze >  >> RDS >> Oracle

Příkaz PL/SQL SQL*Plus Ignorován

Otázka nemá nic společného se spouštěči. Jednoduše máte na následujícím řádku chybu syntaxe:

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

if prohlášení a logické operátory očekávají booleovský výraz. PL/SQL nemá implicitní převody datových typů na booleovské hodnoty.

To znamená :NEW.EVENT_ID není platný booleovský výraz, takže jej nelze použít s and -operator, a proto se kompilace nezdaří s:

PLS-00382: expression is of wrong type

Váš problém lze v podstatě zúžit na následující příklad:

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

Funkční příklady (kompilace v pořádku):

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. Python mysql.connector – správný způsob, jak načíst řádek jako slovník

  2. SQL SELECT přeskočit prvních N výsledků?

  3. MySQL:InnoDb:Čekání na semafor trvalo> 600 sekund. Záměrně jsme zhroutili server

  4. Přidáním hodnot 2 textových polí se zobrazí výsledek v jednom z nich