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

Metode Pengumpulan:Prosedur HAPUS Dalam Database Oracle

Prosedur HAPUS Dalam Database Oracle

Seperti yang dibahas dalam Pengenalan metode pengumpulan, kami memiliki tujuh fungsi pengumpulan dan 3 prosedur pengumpulan. Oleh karena itu total kami memiliki 10 metode koleksi di antaranya telah kami bahas 7 fungsi koleksi sejauh ini. Jadi hari ini dalam tutorial ini kita akan membahas prosedur pengumpulan PL/SQL pertama yaitu prosedur DELETE di Oracle Database.

Apa yang dimaksud dengan penghapusan metode pengumpulan PL/SQL?

Metode pengumpulan DELETE adalah prosedur kelebihan beban yang menghapus elemen dari koleksi.

Apa yang Anda maksud dengan prosedur kelebihan beban?

Anda mendengarnya dengan benar. Metode pengumpulan PL/SQL DELETE adalah prosedur yang kelebihan beban. Artinya, Anda dapat menggunakan prosedur yang sama dalam tiga cara berbeda . Ketiga cara berbeda ini adalah –

  • HAPUS :Panggilan prosedur sederhana tanpa parameter apa pun. Jadi jika prosedur Koleksi PL/SQL DELETE digunakan tanpa parameter apa pun maka prosedur ini akan menghapus semua elemen dari koleksi .
  • HAPUS (nomor indeks ) :Prosedur panggilan dengan parameter tunggal. Parameter tunggal ini adalah nomor indeks koleksi yang valid. Prosedur pengumpulan DELETE dipanggil dengan meneruskan nomor indeks yang valid akan menghapus elemen indeks tertentu .
  • HAPUS (indeks awal, indeks akhir ) : Prosedur panggilan dengan dua parameter. Cara memanggil prosedur DELETE ini disebut sebagai Penghapusan rentang . Dengan cara ini Anda harus menentukan dua Indeks. Dan prosedur menghapus rentang elemen yang berada di antara indeks awal dan indeks akhir .

Jika koleksinya adalah larik asosiatif berindeks string, indeks awal dan indeks akhir adalah string; jika tidak, indeks awal dan akhir adalah bilangan bulat.

Bisakah kita menggunakan Prosedur DELETE di Oracle Database dengan semua koleksi?

Ya, metode pengumpulan DELETE dapat digunakan untuk ketiga jenis koleksi. Ini adalah – Tabel bersarang, VARRAY, dan array Asosiatif.

Tunggu! Tetapi jika kita menggunakan prosedur DELETE dengan VARRAYs, bukankah itu akan membuat koleksi yang jarang?

Karena VARRAY bukan koleksi yang jarang maka kami tidak dapat menghapus baris individual darinya. Selanjutnya, satu-satunya panggilan prosedur yang dapat kita jalankan dengan VARRAY adalah yang pertama. Yang merupakan metode koleksi DELETE tanpa argumen yang menghapus semua elemen dari koleksi. Satu-satunya cara menghapus satu baris dari VARRAY adalah dengan memangkasnya dari ujungnya menggunakan prosedur lain, panggil TRIM.

Dapatkah kita mengharapkan pengecualian dengan metode pengumpulan DELETE?

Ya, ada pengecualian yang terkait dengan metode pengumpulan PL/SQL DELETE. Jika prosedur DELETE diterapkan ke Tabel Bersarang dan VARRAY yang tidak diinisialisasi, maka prosedur tersebut akan memunculkan pengecualian “Collection_is_Null”.

Contoh Metode Pengumpulan PL/SQL DELETE.

Mari kita lihat beberapa contoh dari setiap panggilan Prosedur DELETE yang disebutkan di atas.

Contoh 1:Pemanggilan prosedur sederhana tanpa argumen.

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN

    --Range Delete
    var_nt.DELETE;
    FOR i IN 1..var_nt.LAST LOOP
        IF var_nt.EXISTS(i) THEN
            DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i));
        END IF;
    END LOOP;
END;
/

Memanggil prosedur koleksi DELETE tanpa argumen apa pun akan menghapus semua elemen koleksi yang menerapkannya. Demikian juga, dalam contoh di atas kami memiliki tabel bersarang dengan nama "my_nested_table" di mana kami menerapkan prosedur DELETE. Jadi, pada eksekusi yang berhasil, pemanggilan prosedur akan menghapus semua 10 elemen numerik yang disimpan di dalamnya.

Bacaan yang Disarankan:Cara membuat tabel bersarang lokal ke blok PL/SQL.

Contoh 2:Prosedur panggilan dengan satu parameter

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN
    DBMS_OUTPUT.PUT_LINE('After Deleted');
    --Delete Specific Index
    var_nt.DELETE(5);
    IF var_nt.EXISTS(5) THEN
            DBMS_OUTPUT.PUT_LINE('Value at Index [5] is '|| var_nt(5));
    ELSE
        DBMS_OUTPUT.PUT_LINE('Data is Deleted');
    END IF;
END;
/

Parameter tunggal ini adalah nomor indeks koleksi yang valid. Selain itu, prosedur pengumpulan DELETE yang dipanggil dengan melewatkan nomor indeks yang valid akan menghapus elemen indeks tertentu. Jadi, dalam contoh di atas kami menetapkan 5 sebagai argumen untuk metode pengumpulan PL/SQL DELETE. Jadi, pada eksekusi yang berhasil, pemanggilan prosedur akan menghapus elemen dari koleksi yang disimpan di indeks 5.

Contoh 3:Prosedur panggilan dengan dua parameter.

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN

    --Delete Range
    var_nt.DELETE(2,6);
    FOR i IN 1..var_nt.LAST LOOP
        IF var_nt.EXISTS(i) THEN
            DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i));
        END IF;
    END LOOP;
END;
/

Cara memanggil prosedur DELETE ini disebut sebagai Range delete. Di sini Anda harus menentukan dua Indeks dan prosedur menghapus rentang elemen yang berada di antara indeks awal dan indeks akhir. Dalam contoh di atas, kita menetapkan indeks awal sebagai 2 dan indeks akhir sebagai 6. Ini berarti pada eksekusi, panggilan prosedur DELETE akan menghapus semua elemen yang termasuk dalam rentang ini.

Silakan dan salin kode di atas ke Pengembang SQL Anda dan jalankan sendiri untuk melihat apa hasilnya.

Anda juga dapat menonton video tutorial dengan topik yang sama untuk penjelasan langsung dari semua contoh di atas.

Itulah tutorial tentang metode pengumpulan PL/SQL DELETE di Oracle Database. Semoga Anda menikmati membaca dan belajar sesuatu yang baru. Pastikan untuk membagikan blog ini ke media sosial Anda. Bergabunglah juga dengan saya di halaman Facebook saya untuk konsep PL/SQL yang lebih menarik.

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. Kursor Untuk Loop dengan Pernyataan SQL dinamis

  2. Cara Mendapatkan Tanggal Dari String di Oracle

  3. Apakah ada fungsi untuk membagi string di PL/SQL?

  4. Addnode resolv.conf Kegagalan

  5. Tidak dapat masuk ke database sebagai SYS dengan Oracle SQL Developer