Câu hỏi không liên quan gì đến yếu tố kích hoạt. Bạn chỉ có một lỗi cú pháp trong dòng sau:
IF :NEW.EVENT_ID AND :NEW.DESCRIPTION IS NOT NULL THEN
if
tuyên bố
và các toán tử logic mong đợi một biểu thức boolean. PL / SQL không có chuyển đổi kiểu dữ liệu ngầm định thành giá trị boolean.
Điều này có nghĩa là :NEW.EVENT_ID
không phải là một biểu thức boolean hợp lệ vì vậy nó không thể được sử dụng với and
-người điều hành và do đó biên dịch không thành công với:
PLS-00382: expression is of wrong type
Về cơ bản, vấn đề của bạn có thể được thu hẹp trong ví dụ sau:
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;
/
Ví dụ làm việc (biên dịch tốt):
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;
/