Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zignorowano instrukcję PL/SQL SQL*Plus

Pytanie nie ma nic wspólnego z wyzwalaczami. Po prostu masz błąd składni w następującym wierszu:

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

if oświadczenie a operatory logiczne oczekują wyrażenia logicznego. PL/SQL nie ma niejawnych konwersji typów danych na wartości logiczne.

Oznacza to :NEW.EVENT_ID nie jest prawidłowym wyrażeniem logicznym, więc nie można go używać z and -operator i dlatego kompilacja kończy się niepowodzeniem z:

PLS-00382: expression is of wrong type

Zasadniczo twój problem można zawęzić do następującego przykładu:

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

Przykłady pracy (dobrze się kompilują):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dodawanie ograniczeń za pomocą podzapytania z innej tabeli

  2. java.lang.ClassCastException:nie można rzutować oracle.sql.BLOB na oracle.sql.BLOB

  3. Oracle odpowiednik Varargs Javy

  4. Unikalne ograniczenie Oracle i unikalny indeks

  5. Oracle ODBC:SQLAllocHandle sterownika na SQL_HANDLE_ENV nie powiodło się