質問はトリガーとは何の関係もありません。次の行に構文エラーがあるだけです:
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;
/