Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pernyataan PL/SQL SQL*Plus Diabaikan

Pertanyaannya tidak ada hubungannya dengan pemicunya. Anda hanya memiliki kesalahan sintaks pada baris berikut:

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

if pernyataan dan operator logika mengharapkan ekspresi boolean. PL/SQL tidak memiliki konversi tipe data implisit ke nilai boolean.

Ini berarti :NEW.EVENT_ID bukan ekspresi boolean yang valid sehingga tidak dapat digunakan dengan and -operator dan oleh karena itu kompilasi gagal dengan:

PLS-00382: expression is of wrong type

Pada dasarnya masalah Anda dapat dipersempit menjadi contoh berikut:

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

Contoh kerja (dapat dikompilasi dengan baik):

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. permintaan oracle dengan beberapa kondisi filter

  2. Bagaimana cara Menjalankan prosedur tersimpan dari SQL Plus?

  3. Oracle - Bagaimana cara Oracle mengelola pernyataan DML khusus transaksi

  4. Konversi REGEXP_LIKE di SQL Server T-SQL

  5. regexp_replace:masukkan spasi dalam string jika belum ada