PL / SQL - Array
Dalam bab ini, kita akan membahas array dalam PL / SQL. Bahasa pemrograman PL / SQL menyediakan struktur data yang disebutVARRAY, yang dapat menyimpan kumpulan elemen berurutan ukuran tetap dari jenis yang sama. Varray digunakan untuk menyimpan kumpulan data yang diurutkan, namun seringkali lebih baik untuk menganggap array sebagai kumpulan variabel dengan tipe yang sama.
Semua varray terdiri dari lokasi memori yang berdekatan. Alamat terendah sesuai dengan elemen pertama dan alamat tertinggi untuk elemen terakhir.
Array adalah bagian dari data tipe koleksi dan itu singkatan dari array ukuran variabel. Kami akan mempelajari jenis koleksi lainnya di bab selanjutnya'PL/SQL Collections'.
Setiap elemen di a varraymemiliki indeks yang terkait dengannya. Ini juga memiliki ukuran maksimum yang dapat diubah secara dinamis.
Membuat Jenis Varray
Jenis varray dibuat dengan CREATE TYPEpernyataan. Anda harus menentukan ukuran maksimum dan jenis elemen yang disimpan di varray.
Sintaks dasar untuk membuat tipe VARRAY di level skema adalah -
CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) of <element_type>
Dimana,
- varray_type_name adalah nama atribut yang valid,
- n adalah jumlah elemen (maksimum) di varray,
- element_type adalah tipe data dari elemen array.
Ukuran maksimum varray dapat diubah menggunakan ALTER TYPE pernyataan.
Sebagai contoh,
CREATE Or REPLACE TYPE namearray AS VARRAY(3) OF VARCHAR2(10);
/
Type created.
Sintaks dasar untuk membuat tipe VARRAY dalam blok PL / SQL adalah -
TYPE varray_type_name IS VARRAY(n) of <element_type>
Misalnya -
TYPE namearray IS VARRAY(5) OF VARCHAR2(10);
Type grades IS VARRAY(5) OF INTEGER;
Sekarang mari kita mengerjakan beberapa contoh untuk memahami konsep -
Contoh 1
Program berikut menggambarkan penggunaan varrays -
DECLARE
type namesarray IS VARRAY(5) OF VARCHAR2(10);
type grades IS VARRAY(5) OF INTEGER;
names namesarray;
marks grades;
total integer;
BEGIN
names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz');
marks:= grades(98, 97, 78, 87, 92);
total := names.count;
dbms_output.put_line('Total '|| total || ' Students');
FOR i in 1 .. total LOOP
dbms_output.put_line('Student: ' || names(i) || '
Marks: ' || marks(i));
END LOOP;
END;
/
Ketika kode di atas dijalankan pada prompt SQL, itu menghasilkan hasil sebagai berikut -
Total 5 Students
Student: Kavita Marks: 98
Student: Pritam Marks: 97
Student: Ayan Marks: 78
Student: Rishav Marks: 87
Student: Aziz Marks: 92
PL/SQL procedure successfully completed.
Please note -
Dalam lingkungan Oracle, indeks awal untuk varray selalu 1.
Anda dapat menginisialisasi elemen varray menggunakan metode konstruktor dari jenis varray, yang memiliki nama yang sama dengan varray tersebut.
Varray adalah array satu dimensi.
Sebuah varray secara otomatis NULL ketika dideklarasikan dan harus diinisialisasi sebelum elemennya dapat direferensikan.
Contoh 2
Elemen varray juga bisa berupa% ROWTYPE dari tabel database atau% TYPE dari kolom tabel database. Contoh berikut menggambarkan konsep tersebut.
Kami akan menggunakan tabel CUSTOMERS yang disimpan dalam database kami sebagai -
Select * from customers;
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
+----+----------+-----+-----------+----------+
Contoh berikut memanfaatkan cursor, yang akan Anda pelajari secara rinci di bab terpisah.
DECLARE
CURSOR c_customers is
SELECT name FROM customers;
type c_list is varray (6) of customers.name%type;
name_list c_list := c_list();
counter integer :=0;
BEGIN
FOR n IN c_customers LOOP
counter := counter + 1;
name_list.extend;
name_list(counter) := n.name;
dbms_output.put_line('Customer('||counter ||'):'||name_list(counter));
END LOOP;
END;
/
Ketika kode di atas dijalankan pada prompt SQL, itu menghasilkan hasil sebagai berikut -
Customer(1): Ramesh
Customer(2): Khilan
Customer(3): kaushik
Customer(4): Chaitali
Customer(5): Hardik
Customer(6): Komal
PL/SQL procedure successfully completed.