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

Pernyataan FORALL Dengan Klausa Terikat VALUES-OF Dalam Database Oracle

Sejauh ini kita telah belajar bagaimana menggunakan pernyataan FORALL dengan koleksi padat menggunakan klausa Batas Bawah &Atas dan koleksi jarang menggunakan klausa terikat INDEKS. Bagaimana jika kita ingin menggunakan pernyataan FORALL hanya dengan elemen koleksi yang dipilih? Bisakah kita melakukan itu? Ya, kita dapat melakukannya dengan mudah menggunakan pernyataan FORALL dengan klausa terikat ketiga dan terakhir yaitu ‘VALUES-OF’.

Apa yang dimaksud dengan klausa terikat 'Nilai-dari'?

Pernyataan FORALL adalah tentang mengikat elemen koleksi dengan satu pernyataan DML secara optimal. Menggunakan klausa terikat 'Nilai-of' dari pernyataan FORALL, kita dapat mengikat elemen koleksi yang dipilih dengan pernyataan DML.

Apa sintaks untuk klausa terikat 'Nilai-dari'?

Sebelum memahami cara kerja nilai klausa terikat, mari kita lihat sintaksnya dan pelajari cara sintaksis yang benar dalam menggunakan klausa 'Nilai-of' dengan pernyataan FORALL di Oracle Database.

FORALL idx IN VALUES OF indexing-collection
[Save exception]
DML/MERGE statement;

Info:
Selalu ingat nama klausanya adalah VALUES-OF bukan VALUE-OF. Menulis VALUE-OF akan menyebabkan kesalahan yang dapat menghentikan program Anda.
NILAI hak
NILAI salah

Bagaimana cara kerja klausa Values-of bound?

Nilai-klausa terikat akan membutuhkan dua koleksi. Koleksi pertama adalah ‘Koleksi Sumber’ . Kami akan melakukan operasi DML seperti menyisipkan, menghapus &memperbarui data koleksi ini menggunakan pernyataan FORALL.

Koleksi kedua adalah ‘Koleksi Pengindeksan ' yang akan menentukan nomor indeks elemen yang dipilih dari koleksi pertama. Elemen yang dipilih ini akan menjadi elemen yang Anda inginkan untuk melakukan operasi DML.

Karena klausa Values-of bound menetapkan bahwa nilai variabel Loop Index ('idx' dalam sintaks di atas) dari pernyataan FORALL didasarkan pada nilai elemen dalam koleksi lain. Oleh karena itu kami telah merujuk koleksi lain itu sebagai Pengindeksan-koleksi dalam sintaks di atas.

Jadi apa koleksi Pengindeksan ini?

Koleksi pengindeksan adalah sekelompok indeks yang dapat dilewati oleh pernyataan FORALL. Koleksi ini bisa berupa koleksi padat maupun koleksi jarang. Juga nomor indeks yang disimpan ke dalam koleksi tidak perlu unik dan dapat dicantumkan dalam urutan yang sewenang-wenang.

Apakah ada batasan dengan klausa Values-of yang harus kita ketahui?

Ya, ada beberapa hal yang harus Anda ketahui sebelum bekerja dengan klausa nilai terikat di Oracle Database. Pembatasan ini adalah –

  • Koleksi pengindeksan harus berupa NESTED TABLE atau ASSOCIATIVE ARRAY.
  • Jika kumpulan pengindeksan adalah larik asosiatif maka harus diindeks oleh PLS_INTEGER atau BINARY_INTEGER.
  • Elemen koleksi pengindeksan harus berupa PLS_INTEGER atau BINARY_INTEGER.

Contoh klausa Values-of bound dengan pernyataan FORALL di Oracle Database:

Langkah 1:Buat tabel

CREATE TABLE tut_79 (
    selected_data     NUMBER(5)
);

Langkah 2:Tulis blok PL/SQL yang menunjukkan cara menggunakan klausa Values-of dengan pernyataan FORALL di Oracle Database.

SET SERVEROUTPUT ON;
DECLARE
    --Source collection
    TYPE My_NestedTable IS TABLE OF NUMBER;
    source_col My_NestedTable := My_NestedTable (9,18,27,36,45,54,63,72,81,90);
    
    --Indexing collection
    TYPE My_Array IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
    index_col My_Array;
BEGIN
    --Initializing indexing collection with the index numbers.
    index_col   (1) :=  3;
    index_col   (5) :=  7;
    index_col   (12):=  8;
    index_col   (28):=  10;
    --FORALL statement 
    FORALL idx IN VALUES OF index_col
        INSERT INTO tut_79 VALUES (source_col (idx));
END;
/

Anda dapat melihat penjelasan rinci dari kode ini di video tutorial. Di sana saya telah menjelaskan setiap baris dari blok PL/SQL ini secara rinci.

Demikian tutorial cara menggunakan Values-of bound clause dengan statement FORALL di Oracle Database. Semoga bermanfaat. Silakan bagikan blog ini dengan teman-teman Anda di media sosial mereka. Subscribe juga channel YouTube saya untuk tutorial yang lebih informatif dan menarik.

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. Tipe Data Rekaman Berbasis Kursor Dengan Kursor Mengembalikan Beberapa Nilai Dalam Database Oracle

  2. Apakah mungkin untuk menghasilkan model Django dari database?

  3. CSV di Pengembang SQL…

  4. Cara menjalankan skrip SQL Plus di PowerShell

  5. Cara Mengubah Batasan