Tabel Oracle PLSQL
- Tabel PLSQL adalah tipe data komposit.
- Ini berperilaku dengan cara yang sama seperti array kecuali yang tidak memiliki batas atas, memungkinkannya untuk terus diperluas.
- Mereka juga disebut indeks menurut tabel
- Tabel PLSQL berisi dua elemen
(1) Kunci utama tipe data BINARY_INTEGER yang mengindeks tabel, yang tidak perlu berurutan. Koleksi diperluas dengan menetapkan nilai ke elemen menggunakan nilai indeks yang saat ini tidak ada.
kami juga dapat mengindeks dengan nilai string
(2) Kolom skalar atau tipe data record yang menyimpan indeks berdasarkan elemen tabel
Cara mendefinisikan dan Mendeklarasikan tipe Tabel
Untuk membuat tabel PL/SQL, Anda melakukan dua langkah. Pertama, Anda mendefinisikan tipe TABLE, kemudian mendeklarasikan tabel PL/SQL dari tipe tersebut. Anda dapat mendefinisikan tipe TABEL di bagian deklaratif dari blok, subprogram, atau paket apa pun menggunakan sintaks
Syntax TYPE table_type_name IS TABLE OF datatype [NOT NULL] INDEX BY BINARY_INTEGER;
Jika tipe elemen adalah tipe record, setiap field dalam record harus memiliki tipe data skalar seperti CHAR, DATE, atau NUMBER.
Untuk menentukan tipe elemen, Anda dapat menggunakan %TYPE untuk menyediakan tipe data dari variabel atau kolom database
DECLARE TYPE DEPTTabTyp IS TABLE OF dept.dept_name%TYPE INDEX BY BINARY_INTEGER;
Anda dapat menambahkan batasan NOT NULL ke definisi tipe TABLE dan dengan demikian mencegah penyimpanan null dalam tabel PL/SQL dari tipe tersebut:
DECLARE TYPE DEPTTabTyp IS TABLE OF dept.location%TYPE NOT NULL INDEX BY BINARY_INTEGER;
Anda juga dapat menggunakan %ROWTYPE untuk menentukan tipe elemen.
DECLARE TYPE deptTabTyp IS TABLE OF dept%ROWTYPE INDEX BY BINARY_INTEGER;
Anda menggunakan tipe RECORD yang ditentukan Pengguna untuk menentukan tipe elemen:
DECLARE TYPE emp_phonetyp IS RECORD ( Stdcode PLS_INTEGER, phn_number PLS_INTEGER, extension PLS_INTEGER ); TYPE emp_contact IS TABLE OF emp_phonetyp INDEX BY BINARY_INTEGER;
Setelah Anda menentukan tipe TABLE, Anda dapat mendeklarasikan tabel PL/SQL dari tipe tersebut
DECLARE TYPE SalTabTyp IS TABLE OF emp.sal%TYPE INDEX BY BINARY_INTEGER; TYPE EmpTabTyp IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER; sal_tab SalTabTyp; -- declare PL/SQL table emp_tab EmpTabTyp; -- declare another PL/SQL table
Atribut atau Metode Tabel PLSQL
Tabel PL/SQL memiliki atribut EXISTS, COUNT, FIRST, LAST, PRIOR, NEXT, dan DELETE.
Mereka membuat tabel PL/SQL lebih mudah digunakan dan aplikasi Anda lebih mudah dirawat.
plsql_table_name.attribute_name |
Atribut ada, PRIOR, NEXT, dan DELETE mengambil parameter. Setiap parameter harus berupa ekspresi yang menghasilkan nilai BINARY_INTEGER atau nilai yang secara implisit dapat dikonversi ke tipe data tersebut.
DELETE bertindak seperti prosedur, yang disebut sebagai pernyataan. Namun, atribut tabel PL/SQL lainnya bertindak seperti fungsi, yang disebut sebagai bagian dari ekspresi.
Ada(n) | Mengembalikan nilai true jika elemen ke-n dalam tabel ada |
hitung | Mengembalikan jumlah elemen dalam tabel |
Pertama dan terakhir | FIRST dan LAST mengembalikan nomor indeks pertama dan terakhir (terkecil dan terbesar) dalam tabel PL/SQL |
SEBELUMNYA(n ) | mengembalikan nomor indeks yang mendahului indeks n dalam tabel PL/SQL |
BERIKUTNYA(n ) | mengembalikan nomor indeks yang berhasil mengindeks n |
Hapus | DELETE menghapus semua elemen dari tabel PL/SQL. HAPUS(n ) menghapus n elemen ke-. Jika n adalah nol, HAPUS(n ) tidak melakukan apa-apa. HAPUS(m , n ) menghapus semua elemen dalam rentang m .. n . Jika saya lebih besar dari n atau jika m atau n adalah nol, HAPUS(m , n ) tidak melakukan apa-apa |
Tabel PL/SQL untuk memindahkan data massal masuk dan keluar dari tabel database atau antara aplikasi sisi klien dan subprogram yang disimpan.
Cara mengisi data di Tabel PLSQL
Tabel dengan tipe data sederhana dapat diisi sebagai:
<variable>(<integer>) := <value>;
Tabel dengan tipe data yang kompleks akan membutuhkan kolom yang diisi satu per satu sebagai:
<variable>(<integer>).<column_name> := <value>;
Atau dari kursor:
fetch <cursor_name> into <variable>(<integer>);
Type emptabletype is table of varchar2(10)
Index by binary_integer;
emp_table emptabletyp;
emp_table (1) := ‘good’;
emp_table (2) := ‘bad’’;
Anda juga dapat mengambil data Oracle ke dalam tabel PL/SQL dengan tiga cara lain
a) Pernyataan SELECT INTO memungkinkan Anda memilih satu baris data
Menggunakan pernyataan SELECT INTO, Anda dapat memilih entri kolom ke dalam elemen skalar. Atau, Anda dapat memilih seluruh baris menjadi elemen rekaman. Dalam contoh berikut, Anda memilih baris dari dept tabel database ke dalam record yang disimpan oleh elemen pertama dari tabel PL/SQL dept_tab:
DECLARE
TYPE DeptTabTyp IS TABLE OF dept%ROWTYPE
INDEX BY BINARY_INTEGER;
dept_tab DeptTabTyp;
BEGIN
/* Select entire row into record stored by first element. */
SELECT * INTO dept_tab(1) FROM dept WHERE deptno = 10;
IF dept_tab(1).dname = 'ACCOUNTING' THEN ...
...
END;
b) pernyataan FETCH
Dengan pernyataan FETCH, Anda dapat mengambil seluruh kolom data Oracle ke dalam tabel skalar PL/SQL.
Atau Anda dapat mengambil seluruh tabel data Oracle ke dalam tabel catatan PL/SQL.
DECLARE
TYPE EmpTabTyp IS TABLE OF emp%ROWTYPE
INDEX BY BINARY_INTEGER;
emp_tab EmpTabTyp;
i BINARY_INTEGER := 0;
CURSOR c1 IS SELECT * FROM emp;
BEGIN
OPEN c1;
LOOP
i := i + 1;
/* Fetch entire row into record stored by ith element. */
FETCH c1 INTO emp_tab(i);
EXIT WHEN c1%NOTFOUND;
-- process data record
END LOOP;
CLOSE c1;
END;
c) kursor FOR loop memungkinkan Anda mengambil beberapa baris.
DECLARE
TYPE EnameTabTyp IS TABLE OF emp.ename%TYPE
INDEX BY BINARY_INTEGER;
TYPE SalTabTyp IS TABLE OF emp.sal%TYPE
INDEX BY BINARY_INTEGER;
ename_tab EnameTabTyp;
sal_tab SalTabTyp;
n BINARY_INTEGER := 0;
BEGIN
/* Fetch entire columns into PL/SQL tables. */
FOR emp_rec IN (SELECT ename, sal FROM emp) LOOP
n := n + 1;
ename_tab(n) := emp_rec.ename;
sal_tab(n) := emp_rec.sal;
END LOOP;
...
END;
Anda harus membaca postingan PLSQL lainnya ini
Struktur dan Jenis Blok Oracle PLSQL
Catatan Oracle PLSQL
Pertanyaan wawancara Oracle plsql
Tutorial cepat Oracle sql dan plsql