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

Metode Pengumpulan:Prosedur Pangkas Dalam Database Oracle

Selamat datang kembali ke tutorial terakhir dalam seri Koleksi PL/SQL. Seri video tutorial terpanjang sejauh ini di saluran. Dalam tutorial ini kita akan belajar tentang prosedur PL/SQL Collection terakhir yang merupakan prosedur TRIM di Oracle Database.

Apa itu Metode Pengumpulan PL/SQL TRIM?

Metode Koleksi TRIM di Oracle db adalah prosedur kelebihan beban yang digunakan untuk menghapus satu atau lebih elemen dari akhir koleksi.

Dalam berapa banyak cara kita dapat memanggil metode pengumpulan prosedur TRIM di Oracle Database?

Karena Metode Pengumpulan PL/SQL TRIM adalah prosedur yang kelebihan beban sehingga kami dapat menyebutnya dalam dua cara berbeda. Dua pemanggilan prosedur TRIM yang berbeda ini adalah:

  1. TRIM:Memotong prosedur tanpa parameter.

Jika kita menggunakan prosedur TRIM tanpa parameter apapun maka hanya akan menghapus satu elemen dari akhir koleksi.

  1. TRIM:Potong prosedur dengan satu parameter.

Prosedur TRIM yang dipanggil dengan melewatkan satu argumen akan menghapus sejumlah elemen dari akhir koleksi seperti yang ditentukan oleh parameter. Parameter itu harus berupa bilangan bulat yang valid. Juga tidak boleh lebih besar dari jumlah maksimum elemen yang dimiliki koleksi Anda.

Info:Prosedur pemangkasan akan memunculkan kesalahan jika ada upaya untuk memangkas ruang di bawah elemen nol.

Dapatkah kita menggunakan metode pengumpulan PL/SQL TRIM dengan ketiga jenis koleksi?

Sayangnya tidak, kami tidak bisa. Mirip dengan prosedur Koleksi PL/SQL EXTEND, prosedur TRIM hanya dapat digunakan dengan kumpulan Tabel Bersarang dan VARRAY. Namun kami tidak dapat menggunakannya dengan Array Asosiatif.

Apa yang akan terjadi jika kita menggunakan PL/SQL Collection Procedure TRIM dengan array Asosiatif?

Jika metode pengumpulan Trim versi Oracle Database digunakan dengan Array Asosiatif maka Anda akan mendapatkan kesalahan waktu kompilasi .

Apa spesifikasi Trim Procedure di Oracle Database?

Spesifikasi prosedur pengumpulan TRIM adalah:

PROCEDURE TRIM (n PLS_INTEGER:= 1);

Jika n adalah NULL maka trim tidak akan melakukan apa-apa.

Saya mendengar Anda berkata dalam video yang kita juga bisa mendapatkan SUBSCRIPT_BEYOND_COUNT pengecualian?

Ya, Metode Pengumpulan PL/SQL TRIM akan memunculkan SUBSCRIPT_BEYOND_COUNT pengecualian. Jika ada upaya untuk memangkas lebih banyak elemen daripada yang sebenarnya ada dalam koleksi.

Anda dapat menemukan contoh pengecualian ini yang saya tunjukkan dalam video nanti di blog ini. Jika Anda ingin menonton videonya, ini dia. Jika tidak, silakan gulir ke bawah.

Apakah ada pengecualian lain yang terkait dengan metode Koleksi PL/SQL Trim yang harus kita ketahui?

Ya, ada satu pengecualian lagi yang terkait dengan prosedur TRIM dan itu adalah pengecualian COLLECTION_IS_NULL.

Setiap kali Anda menerapkan prosedur pengumpulan TRIM ke Tabel Bersarang atau VARRAY yang tidak diinisialisasi, maka kompiler akan memunculkan pengecualian COLLECTION_IS_NULL.

Dapatkah kita menggunakan prosedur TRIM dan DELETE bersama-sama?

Tidak, kami tidak dapat menggunakan prosedur TRIM dan DELETE koleksi bersama-sama. Menggunakannya satu sama lain akan menghasilkan hasil yang tidak terduga.

Pikirkan tentang skenario ketika Anda telah MENGHAPUS elemen yang terletak di akhir variabel VARRAY dan kemudian menerapkan prosedur TRIM pada hal yang sama. Bisakah Anda menebak jumlah elemen yang mungkin telah Anda hapus? Anda mungkin bingung untuk percaya bahwa dua elemen telah dihapus namun kenyataannya hanya satu yang telah dihapus. TRIM bertindak atas placeholder yang ditinggalkan oleh prosedur DELETE.

Untuk menghindari hasil yang membingungkan dan menakutkan ini, dukungan database Oracle sangat merekomendasikan bahwa kedua prosedur ini harus digunakan secara eksklusif pada koleksi tertentu.

Bagaimana dengan contohnya? Apakah kita melakukannya di blog ini atau tidak?

Tentu, kami pasti akan melakukan contoh di blog ini. Sebenarnya saya akan menunjukkan kepada Anda demonstrasi masing-masing prosedur PL/SQL Collection panggilan TRIM yang kami sebutkan di atas. Ini dia:

1. Prosedur Pengumpulan PL/SQL TRIM tanpa parameter.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj (i));
    END LOOP;
END;
/ 

2. Prosedur Koleksi TRIM dengan parameter.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM (3);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

3. Prosedur Pengumpulan PL/SQL TRIM SUBSCRIPT_BEYOND_COUNT pengecualian.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM(6);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

Pengecualian SUBSCRIPT_BEYOND_COUNT terjadi ketika kami meneruskan argumen yang lebih besar dari jumlah total elemen koleksi. Pada contoh di atas koleksi yang kami gunakan adalah tabel Bersarang dengan nama 'my_nestedTable' yang memiliki 5 elemen numerik yang tersimpan di dalamnya. Namun dalam pemanggilan prosedur kami menginstruksikan kompiler untuk TRIM 6 elemen yang pasti tidak mungkin sehingga dalam hal ini kompiler memunculkan SUBSCRIPT_BEYOND_COUNT exception.

4. Prosedur Pengumpulan TRIM dengan VARRAY.

SET SERVEROUTPUT ON;
DECLARE
 TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
 vry_obj inBlock_vry := inBlock_vry(1, 2, 3, 4, 5);
BEGIN
    --TRIM without parameter
    vry_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
    --TRIM with Parameter
    vry_obj.TRIM (2);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
END;
/

Itulah tutorial menjelaskan konsep prosedur TRIM Metode Koleksi PL/SQL di Oracle Database.

Semoga Anda menyukainya. Terhubung dengan saya di Halaman Facebook saya untuk pembaruan dan wawasan lebih lanjut tentang konsep Oracle Database. 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. Menentukan lokasi file tnsnames.ora yang relevan

  2. Bergabung sendiri di oracle dengan contoh

  3. Menginstal Oracle 12c Edisi Standar di Windows 10 Professional

  4. ORA-00257:kesalahan pengarsipan. Hubungkan internal saja, sampai dibebaskan.

  5. ketika memasukkan karakter persia di Oracle db saya melihat tanda tanya