Oracle
 sql >> база данни >  >> RDS >> Oracle

Игнориран оператор PL/SQL SQL*Plus

Въпросът няма нищо общо с тригерите. Просто имате синтактична грешка в следния ред:

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

if изявление и логическите оператори очакват булев израз. PL/SQL няма неявни преобразувания на типове данни в булеви стойности.

Това означава :NEW.EVENT_ID не е валиден булев израз, така че не може да се използва с and -оператор и следователно компилацията е неуспешна с:

PLS-00382: expression is of wrong type

По същество вашият проблем може да бъде стеснен до следния пример:

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

Работещи примери (компилира добре):

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. Дефиниране на набор от знаци за колона За таблици на база данни на oracle

  2. Датата на Oracle изглежда равна

  3. Как да конвертирате дата в времеви печат (DD-MON-YYYY HH24:MI:SS.FF формат) в oracle?

  4. COUNT(rowid) по-бърз ли е от COUNT(*)?

  5. когато вмъкнете персийски символ в oracle db, виждам въпросителния знак