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

Cara Membuat Array Asosiatif Di Database Oracle

Array asosiatif sebelumnya dikenal sebagai tabel PL/SQL di PL/SQL 2 (versi PL/SQL yang disertakan dengan Oracle 7) dan Index-by-Table di Oracle 8. Setelah Nested Table dan VARRAY, Associative Array adalah jenis koleksi ketiga yang banyak digunakan oleh developer.

Mari kita cari tahu jawaban dari beberapa pertanyaan tentang array asosiatif yang akan membantu Anda memahaminya dengan lebih baik. Di bagian ini Anda juga akan menemukan beberapa perbedaan &persamaan inti antara Associative Array dan koleksi lainnya seperti VARRAY &Nested Tables.

Apakah array Asosiatif dibatasi atau tidak?

Mirip dengan tabel Bersarang, Array asosiatif adalah bentuk koleksi yang tidak dibatasi. Ini berarti tidak ada batas atas jumlah elemen yang dapat ditampungnya. Hal yang sama tidak berlaku untuk VARRAY karena Array variabel bersifat terikat.

Apakah array Asosiatif persisten atau non-persisten?

Tidak seperti Tabel Bersarang &VARRAY, Array asosiatif adalah bentuk koleksi non-persisten . Ini berarti baik array maupun data tidak dapat disimpan dalam database tetapi hanya tersedia dalam blok PL/SQL.

Apakah array Asosiatif jarang atau padat?

Sedangkan VARRAY adalah array yang padat penduduknya, Tabel bersarang dan Array Asosiatif adalah array yang jarang penduduknya yang berarti penomoran subskrip harus unik tetapi tidak harus berurutan.

Bisakah kita membuat array Asosiatif sebagai objek database?

Karena sifatnya yang tidak persisten, Array asosiatif tidak dapat disimpan ke dalam skema. Mereka hanya dapat dibuat dalam blok PL/SQL tetapi tidak pada level skema sebagai objek database.

Dapatkah kita menggunakan kembali array asosiatif?

Seperti disebutkan di atas Array asosiatif adalah kumpulan non-persisten yang tidak dapat dibuat pada tingkat skema sehingga tidak dapat disimpan ke dalam skema sehingga tidak dapat digunakan kembali.

Apakah penomoran indeks/Penomoran subskrip dalam array Asosiatif implisit atau eksplisit?

Tidak seperti Tabel Bersarang dan VARRAY, pengindeksan dalam array Asosiatif bersifat Eksplisit. Saat Oracle Engine menetapkan subskrip/nomor Indeks ke elemen tabel Bersarang dan koleksi VARRAY secara implisit di latar belakang, dalam larik asosiatif, pengguna harus menentukan nomor indeks secara eksplisit saat mengisi koleksi.

Bagaimana cara Data disimpan ke dalam Array Asosiatif?

Array asosiatif menyimpan data dalam pasangan Key-Value di mana nomor indeks berfungsi sebagai kunci dan data yang disimpan ke dalam sel berfungsi sebagai nilainya.

Ini adalah beberapa pertanyaan inti yang dapat Anda harapkan dalam ujian atau wawancara Anda. Baca terus untuk mengetahui perbedaan teknis antara array Asosiatif dan koleksi lainnya.

Tentukan Koleksi PL/SQL – Array Asosiatif?
Dengan menggunakan informasi yang diperoleh dari pertanyaan di atas, kita dapat mendefinisikan Array Asosiatif sebagai koleksi homogen satu dimensi yang menyimpan data ke dalam pasangan nilai kunci. Sifatnya jarang, tidak terbatas, dan tidak persisten.

Apa Sintaks Array Asosiatif PL/SQL?

TYPE aArray_name IS TABLE OF element_datatype [Not Null]
INDEX BY index_elements_datatype;

Seperti yang dikatakan di atas Array asosiatif adalah jenis koleksi non-persisten sehingga tidak dapat dibuat sebagai objek database mandiri sehingga tidak dapat digunakan kembali seperti koleksi lainnya. Ini hanya dapat tersedia di blok PL/SQL. Selalu pastikan Anda membuat array asosiatif Anda di bagian DELCARATION dari PL/SQL Block Anda. [Baca di sini untuk mengetahui berapa banyak bagian yang ada di blok PL/SQL?] Mari kita lihat sintaksnya secara detail:

Jenis :Kata kunci menandai awal pernyataan.

nama_Array :Nama array asosiatif. Ini sepenuhnya ditentukan pengguna dan sesuai dengan norma penamaan Oracle Database.

ADALAH DAFTAR :Frase yang dicadangkan Oracle Database menggunakan pengguna mana yang memberi tahu kompiler jenis elemen apa yang akan disimpan oleh array?

Element_Datatype :Tipe data elemen yang akan disimpan array. Di Oracle Database semua koleksi bersifat homogen, yang berarti setiap elemen koleksi harus memiliki tipe data yang sama.

Bukan_null :Klausa opsional, yang jika digunakan memastikan bahwa setiap indeks memiliki nilai yang sesuai dengannya daripada NULL.

INDEKS MENURUT :Klausa yang menggunakan pengguna yang menentukan tipe data dari subskrip array.

Index_elements_datatype :Tipe data elemen subskrip array.

Contoh:Bagaimana Cara Membuat Array Asosiatif di Database Oracle?

Array asosiatif hanya dapat dibuat di dalam blok PL/SQL sehingga cakupannya terbatas pada blok di mana ia dibuat yang berarti tidak dapat digunakan di luar blok itu. Mari kita lihat cara membuat Array Asosiatif di Oracle Database?

Langkah 1:Buat Array Asosiatif

	SET SERVEROUTPUT ON;
	DECLARE
	    TYPE books IS TABLE OF NUMBER
	        INDEX BY VARCHAR2 (20);

Pada kode di atas kita membuat array Asosiatif dengan nama ‘Buku ’ yang dapat menampung elemen NUMBER tipe data dan subskrip tipe data VARCHAR2.

Langkah 2:Buat Variabel Array Asosiatif

Isbn Books;

Anda memerlukan variabel array Asosiatif untuk mereferensikan array dalam program. Variabel array dapat dibuat dengan sangat mudah. Anda hanya perlu menulis nama variabel (yaitu ‘isbn’ dalam kasus kami) yang didefinisikan pengguna diikuti dengan nama array asosiatif.

Langkah 3:Masukkan Data ke dalam Array Asosiatif

Seperti disebutkan di atas Array asosiatif menyimpan data ke dalam pasangan nilai kunci. Jadi tidak seperti koleksi lainnya, pengguna harus memasukkan subskrip larik (kunci) dan data.

BEGIN
-- How to insert data into the associative array 
isbn('Oracle Database') := 1234;
isbn('MySQL') := 9876; 

Seperti tabel Bersarang dan VARRAY, kami memasukkan data ke dalam array Asosiatif di bagian eksekusi blok PL/SQL. Jika Anda perhatikan di sini tidak seperti koleksi lain, kami tidak menggunakan pernyataan INSERT DML untuk memasukkan data, melainkan kami memasukkannya menggunakan variabel Array 'isbn' . Di bawah ini Anda dapat melihat sintaks pernyataan insert untuk array asosiatif menggunakan variabel array.

Array_variable (subscript/key) := data; 

Seperti yang Anda lihat untuk memasukkan data ke dalam array asosiatif, pertama-tama Anda harus menulis nama variabel array diikuti dengan subskrip array dan kemudian data untuk array Anda.

Langkah 4:Bagaimana cara memperbarui data koleksi – Array asosiatif?

Memperbarui nilai array Asosiatif semudah memasukkannya. Jika Anda ingin mengubah nilai apa pun, tulis pernyataan yang sama yang digunakan untuk penyisipan dengan nilai yang dimodifikasi. Misal anda ingin merubah nilai terhadap key MySQL dari 9876 menjadi 1010 maka anda tinggal menulis

	-- How to update data of associative array.	
	 	isbn('MySQL') := 1010; 

Sekali lagi Anda tidak perlu menulis UPDATE DML untuk memperbarui nilainya. Anda cukup menggunakan variabel array.

Langkah 5:Bagaimana cara mengambil data dari Koleksi- Array asosiatif?

Sama seperti kita tidak perlu Sisipkan pernyataan DML untuk memasukkan nilai atau Perbarui DML untuk memperbarui nilai sama halnya kita tidak perlu Pilih DML untuk mengambil nilai.

Misalkan Anda ingin melihat nilai yang disimpan terhadap kunci 'Oracle Database'. Untuk itu Anda hanya perlu menulis…

-- how to retrieve data using key from associative array.  	
	  DBMS_OUTPUT.PUT_LINE ('Value '||isbn ('Oracle Database'));

Mari gabungkan semua potongan kode ini menjadi satu program.

SET SERVEROUTPUT ON;
DECLARE
    TYPE books IS TABLE OF NUMBER
        INDEX BY VARCHAR2(20);
    isbn Books;
BEGIN
    	-- How to insert data into the associative array 
    	isbn('Oracle Database') := 1234;
    	isbn('MySQL') := 9876;
    	DBMS_OUTPUT.PUT_LINE('Value Before Updation '||isbn('MySQL'));

    	-- How to update data of associative array.
    	isbn('MySQL') := 1010;
    
-- how to retrieve data using key from associative array.  
    	DBMS_OUTPUT.PUT_LINE('Value After Updation '||isbn('MySQL'));
END;
/

Berikut adalah program dengan beberapa modifikasi menit. Program PL/SQL di atas menunjukkan cara mengambil satu nilai tertentu menggunakan kunci. Anda dapat menonton Video Tutorial untuk mempelajari cara mengambil semua nilai dari Associative Array menggunakan Loops. Di sana saya telah menjelaskannya dengan sangat rinci.

Sebelum mengakhiri tutorial ini, ada beberapa petunjuk yang menurut saya harus Anda ketahui. Petunjuk ini adalah –

  • PL/SQL Associative Array mendukung BINARY_INTEGER, PLS_INTEGER, POSITIF, NATURAL, SIGNTYPE atau VARCHAR2 sebagai tipe data indeks.
  • RAW, NUMBER, LONG-ROW, ROWID, dan CHAR adalah tipe data indeks yang tidak didukung.

Dalam hal Tipe Data Elemen, kumpulan PL/SQL Mendukung Array Asosiatif –

  • Tipe data skalar PL/SQL :DATE, BLOB, CLOB, BOOLEAN atau NUMBER &VARCHAR2 dengan subtipenya.
  • Data yang disimpulkan :Istilah yang digunakan untuk tipe data yang diwarisi dari kolom tabel, ekspresi kursor, atau variabel paket yang telah ditentukan sebelumnya
  • Jenis yang ditentukan pengguna: Jenis objek atau jenis koleksi yang ditentukan pengguna.

Itu adalah tutorial rinci tentang PL/SQL Collection – Associative Array. Tutorial ini mencakup semua topik yang dapat Anda harapkan dalam Ujian Sertifikasi Database Oracle serta dalam Wawancara. Semoga Anda menikmati membaca.

Anda dapat membantu orang lain dalam mempelajari sesuatu yang baru serta membantu kami menjangkau lebih banyak orang dengan membagikan blog ini di jejaring sosial Anda. Jangan lupa untuk menandai kami karena kami senang memberikan Teriakan keras kepada semua pendukung, pemirsa, dan pelanggan kami. 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. Bagaimana cara membuat dan menggunakan tabel sementara dalam prosedur tersimpan Oracle?

  2. Urutan eksekusi kondisi dalam klausa 'di mana' SQL

  3. BDE vs ADO di Delphi

  4. Permintaan Oracle untuk mengambil nama kolom

  5. Bagaimana cara melihat gambar dari kolom gumpalan di Oracle dengan JasperReports?