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

Tambahkan pernyataan JIKA ELSE

Mengenai cara mengatasi masalah sintaks seperti ini sebagai pemula, saya sarankan Anda berlatih menyederhanakannya ke contoh terkecil, sehingga Anda tidak terganggu oleh logika join.

Misalnya, Anda dapat dengan cepat menguji ini dan melihat bahwa itu tidak akan berhasil :

declare
    rc sys_refcursor;
begin
    open rc for
        case
            when 1 = 1 then select * from dual  -- not valid
        end;
end;

yang gagal dengan

ORA-06550: line 6, column 29:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following: ...

karena open rc for select sintaks harus berupa pernyataan tunggal dan tidak dapat dipisahkan dengan logika kondisional.

Perhatikan bagaimana tidak ada create function , parameter atau bergabung dll untuk memperumit masalah. Anda dapat menambahkan semua itu kembali setelah sintaks Anda diluruskan. case sintaks pernyataan adalah di sini . (Perhatikan bahwa ada beberapa jenis case .) Harus berupa

declare
    rc sys_refcursor;
begin
    case
        when 1 = 1 then
            open rc for select * from dual;
    end case;
end;

atau yang setara menggunakan if :

declare
    rc sys_refcursor;
begin
    if 1 = 1 then
        open rc for select * from dual;
    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. blok plsql untuk mendapatkan hasil kueri sql dinamis

  2. Bisakah kita memiliki banyak WITH AS dalam satu sql - Oracle SQL

  3. COLLATION() Fungsi di Oracle

  4. Periksa Batasan Memanggil Fungsi Oracle SQL developer

  5. Bagaimana cara menguji izin sistem file baca/tulis dari direktori Oracle?