Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Menggunakan Klausa Kumpulkan Massal PL/SQL Dengan Pernyataan FETCH INTO

Klausul Kumpulkan Massal Dengan Pernyataan FETCH INTO

Dalam tutorial sebelumnya kami berhasil mengompres beberapa sakelar konteks menjadi satu dengan menggunakan PL/SQL Bulk Collect dengan pernyataan SELECT-INTO. Pernyataan SELECT-INTO adalah kueri standar SQL yang berarti pengembang tidak memiliki banyak kendali atas eksekusi pernyataan.

Jika kita berbicara tentang kinerja kueri, kita tidak dapat melampaui pernyataan SELECT-INTO. Mari kita lihat bagaimana kita dapat mengatasi semua kekurangan pernyataan SELECT-INTO ini.

Di blog ini Anda akan mempelajari cara menggunakan klausa Kumpulkan Massal dengan pernyataan FETCH-INTO dari kursor eksplisit. Karena pernyataan FETCH adalah bagian dari siklus hidup kursor, maka pengetahuan tentang kursor eksplisit diperlukan untuk pemahaman yang lebih baik tentang tutorial ini. Untuk hal yang sama, Anda dapat melihat tutorial tentang cara membuat kursor eksplisit di database Oracle.

Mengapa kita harus menggunakan klausa Kumpulkan Massal dengan pernyataan FETCH INTO?

Seperti yang disebutkan di blog sebelumnya setiap kali kita menggunakan Bulk-Collect dengan pernyataan SELECT-INTO, mesin runtime menggunakan kursor implisit untuk memproses tugas. Tetapi jika kita menggunakan Bulk Collect dengan pernyataan FETCH-INTO maka mesin runtime akan menggunakan kursor eksplisit untuk memproses tugas.

Kursor eksplisit selalu membantu kami mendapatkan kontrol lanjutan atas kueri SQL standar kami. Misalnya dengan kursor eksplisit kita dapat mengontrol kapan harus mengambil record atau berapa banyak record yang ingin kita ambil sekaligus namun ini tidak mungkin dalam kasus pernyataan SELECT-INTO.

Apa sintaks dari pernyataan Bulk Collect with Fetch-Into?

Mirip dengan pernyataan SELECT-INTO, klausa pengumpulan massal berfungsi sebagai atribut untuk pernyataan FETCH-INTO. Berikut sintaksnya

FETCH <cursor_name> BULK COLLECT INTO <plsql_collection>;

Pernyataan FETCH adalah bagian dari kursor eksplisit. Jika Anda mencoba menjalankannya tanpa mendeklarasikan kursor induknya, maka Anda akan mendapatkan kesalahan. Juga selalu ingat bahwa koleksi PL/SQL adalah satu-satunya struktur yang didukung untuk pengumpulan massal.

Contoh:Cara menggunakan PL/SQL Bulk Collect dengan pernyataan FETCH-INTO di Oracle Database.

SET SERVEROUTPUT ON;
DECLARE
--Create an explicit cursor
    CURSOR exp_cur IS
    SELECT first_name FROM employees;

    --Declare collection for holding the data 
    TYPE nt_fName   IS TABLE OF VARCHAR2 (20);
    fname   nt_fName;
BEGIN
    OPEN exp_cur;
    LOOP
        FETCH exp_cur BULK COLLECT INTO fname;
        EXIT WHEN fname.count=0;
        --Print data
        FOR idx IN fname.FIRST.. fname.LAST
        LOOP
            DBMS_OUTPUT.PUT_LINE (idx||' '||fname(idx) );
        END LOOP; 
    END LOOP;
    CLOSE exp_cur;
END;
/

Saya telah menjelaskan setiap baris dari seluruh kode ini secara rinci dalam tutorial video di saluran YouTube saya. Anda dapat menonton tutorial ini.

Karena dalam kode ini kami telah menggunakan klausa Kumpulkan Massal dengan pernyataan ambil ke dalam itu berarti bahwa pengalihan konteks tidak akan menjadi masalah. Seperti yang kita ketahui, klausa pengumpulan massal mengompresi beberapa sakelar menjadi satu sakelar sehingga tidak ada lagi hambatan kinerja.

Tetapi apakah itu berarti kode ini dioptimalkan dengan baik &tidak memerlukan pengoptimalan lebih lanjut? Atau dalam hal ini kinerja kueri tidak akan menjadi masalah bagi kami di masa mendatang?

Pantau terus, untuk mendapatkan jawaban atas semua pertanyaan ini serta untuk mempelajari bagaimana kami dapat lebih mengoptimalkan program PL/SQL ini.

Semoga Anda menikmati blog ini. Jika Anda memiliki keraguan atau pertanyaan atau Anda pikir saya lupa menyebutkan sesuatu di blog ini, tulislah kepada saya di halaman Facebook atau Twitter saya. Terima kasih dan 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. Beberapa Cara Menyisipkan Split Delimited Strings dalam Kolom

  2. SQL ANTARA-Tips Cerdas untuk Memindai Rentang Nilai

  3. Pembuatan Data Sintetis

  4. SQL INTERSECT

  5. Operator Aritmatika SQL