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

Metode Pengumpulan:Fungsi SEBELUM &BERIKUTNYA Dalam Database Oracle

Seperti yang kita lihat di Pengantar Metode Koleksi PL/SQL bahwa ada 7 fungsi koleksi di Oracle Database. Di antara tujuh fungsi ini, kita telah mempelajari lima metode pertama. Sebelum dan Berikutnya adalah dua metode/fungsi pengumpulan PL/SQL terakhir yang masih tersisa untuk dijelajahi.

Jadi di blog PL/SQL hari ini kita akan menjelajahi dua metode pengumpulan yang belum tersentuh ini secara mendetail.

Apakah Fungsi Koleksi Sebelumnya dan Berikutnya?

Itu selalu baik untuk memiliki beberapa fungsi di bawah lengan Anda yang dapat membantu Anda dalam menavigasi konten koleksi Anda. Fungsi Sebelum &Berikutnya bisa menjadi fungsi-fungsi itu.

Kedua fungsi ini mengambil indeks koleksi sebagai input dan mengembalikan hasilnya.

Misalnya metode pengumpulan PL/SQL SEBELUM mengambil indeks sebagai input dan mengembalikan nilai yang disimpan ke dalam indeks terendah sebelumnya. Sedangkan metode pengumpulan NEXT mengembalikan nilai dari indeks berikutnya yang lebih tinggi.

Apakah Fungsi atau Prosedur Koleksi Sebelumnya dan Berikutnya?

Baik Sebelum dan Berikutnya adalah fungsi.

Dapatkah kita menggunakan kedua fungsi ini dengan ketiga jenis koleksi?

Ya, fungsi koleksi Sebelumnya dan Berikutnya dapat digunakan dengan ketiga jenis koleksi tersebut.

Kapan Metode Pengumpulan PL/SQL Sebelum dan Berikutnya akan mengembalikan nol?

Collection Method Prior mengembalikan null ketika tidak ada nilai subscript yang lebih rendah yang tersedia dan Collection method Next mengembalikan null ketika tidak ada nilai subscript yang lebih tinggi yang tersedia untuk dikembalikan.

Dengan kata sederhana kita dapat mengatakan bahwa kedua fungsi koleksi ini mengembalikan Null jika keduanya digunakan dengan indeks Pertama dan Terakhir dari sebuah koleksi secara berurutan .

Apa yang akan menjadi output dari metode Collection Next dan Prior jika kita menggunakannya dengan array asosiatif?

Jika metode pengumpulan PRIOR dan NEXT digunakan dengan array asosiatif maka mereka akan mengembalikan output tipe data VARCHAR2 atau LONG.

Saya pernah mendengarnya, metode ini memunculkan beberapa jenis pengecualian. Benarkah?

Ya itu benar. Jika salah satu dari fungsi ini diterapkan ke Nested Table atau Varray yang tidak diinisialisasi, maka fungsi tersebut akan memunculkan pengecualian COLLECTION_IS_NULL.

Dapatkah Anda menunjukkan kepada kami cara menggunakan fungsi-fungsi ini dalam kode kami?

Tentu saja mengapa tidak! Saya akan menunjukkan kepada Anda aplikasi fungsi koleksi Sebelumnya dan Berikutnya dengan bantuan kode yang sangat mudah.

Contoh Metode Pengumpulan Sebelumnya.

Pada metode ini kita akan belajar bagaimana menggunakan metode collection Prior dengan Nested Table.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt   my_nested_table := my_nested_table(9,18,27,36,45,54,63,72,81,90);
BEGIN
        dbms_output.put_line('Index prior to index 3 is '||var_nt.PRIOR(3)); 
        dbms_output.put_line('Value before 3rd Index is '||var_nt(var_nt.PRIOR(3))); 
END;
/

Di Blok PL/SQL anonim di atas, kami memiliki dua pernyataan keluaran dengan 'Panggilan Fungsi Sebelumnya'. Pernyataan keluaran pertama akan mengembalikan nomor indeks sebelum nomor Indeks 3 yang memiliki beberapa nilai yang tersimpan di dalamnya. Dalam kasus kami indeks sebelum indeks nomor 3 adalah 2. Jadi 2 akan menjadi output dari pernyataan output pertama.

Dalam pernyataan keluaran kedua kami memanggil fungsi Prior dan menyediakannya sebagai masukan ke objek koleksi.

var_nt(var_nt.PRIOR(3)) 

Mesin Oracle akan menjalankan fungsi Collection Prior terlebih dahulu (sebut saja bagian 1) dan menggunakan hasil dari bagian 1 itu kemudian akan mengeksekusi objek koleksi (sebut saja bagian 2) dan menghasilkan hasil akhir yang akan menjadi 18 dalam kasus kami. Silakan, salin kodenya dan coba jalankan sendiri.

Apa yang akan terjadi jika kita menghapus Indeks Terendah Sebelumnya dari tabel bertingkat?

Jadi sekarang pertanyaannya adalah, apa yang akan terjadi jika Anda menghapus Indeks Terendah Sebelumnya yaitu 2 dalam kode kami. Dalam hal ini, hasilnya pasti tidak akan sama. Fungsi sebelumnya mengembalikan indeks terendah sebelumnya. Tetapi Indeks itu harus mengandung beberapa nilai.

Cobalah sendiri. Ini kodenya.

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt   my_nested_table := my_nested_table(9,18,27,36,45,54,63,72,81,90);
BEGIN
        var_nt.DELETE(2);
        dbms_output.put_line('Index prior to index 3 is '||var_nt.PRIOR(3)); 
        dbms_output.put_line('Value before 3rd Index is '||var_nt(var_nt.PRIOR(3))); 
END;
/

Contoh Metode Pengumpulan Selanjutnya.

Anda dapat menggunakan metode PL/SQL Collection Next sama seperti Anda menggunakan fungsi Prior pada kode di atas. Metode pengumpulan NEXT mengembalikan nilai dari indeks berikutnya yang lebih tinggi. Ini contohnya

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt   my_nested_table := my_nested_table(9,18,27,36,45,54,63,72,81,90);
BEGIN
        dbms_output.put_line('Next Higher Index to index 3 is '||var_nt.NEXT(3)); 
        dbms_output.put_line('Value after 3rd Index is '||var_nt(var_nt.NEXT(3))); 
END;
/

Kedua contoh tersebut hampir sama kecuali pemanggilan fungsi collection. Di bagian eksekusi blok PL/SQL ini kita kembali memiliki dua pernyataan keluaran. Pernyataan keluaran pertama akan mengembalikan nomor indeks non-kosong berikutnya sedangkan yang kedua akan mengembalikan data yang disimpan ke dalam indeks itu. Cara kerja kedua pernyataan ini akan sama seperti yang telah kita bahas di atas. Silakan salin kodenya dan lihat hasilnya.

Itu tadi tutorial detail metode PL/SQL Collection Next and Prior. Semoga Anda menikmati membaca dan belajar sesuatu yang baru. Pastikan untuk Bagikan blog ini di Media Sosial Anda. Untuk membagikan blog ini di Facebook Anda Klik Di Sini dan untuk twitter Klik Di Sini.

Terima kasih &semoga harimu menyenangkan!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolom identitas Oracle dan masukkan ke pilih

  2. Ubah VARCHAR2 menjadi Angka

  3. Hibernate tidak dapat mengambil SequenceInformation dari database

  4. PL/SQL:Kesalahan PLS-00306:nomor atau jenis argumen yang salah saat dipanggil untuk dipicu untuk tabel angka

  5. Bagaimana cara menampilkan hasil pernyataan SELECT yang dieksekusi menggunakan SQL dinamis asli?