Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Câu lệnh PL / SQL SQL * Plus bị bỏ qua

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


  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 Cách sử dụng ống chỉ với vị trí ống chỉ động

  2. tìm nạp tên bảng từ một cột cho mệnh đề from

  3. Sử dụng tnsnames.ora trong Oracle SQL Developer

  4. Cách lấy đối tượng Connection hiện tại trong Spring JDBC

  5. Cách thực hiện hoạt động hàng loạt bằng pl / sql