Oracle Jenis Catatan PL/SQL dengan Contoh
Apa itu Tipe Rekaman?
Tipe Record adalah tipe data kompleks yang memungkinkan pemrogram untuk membuat tipe data baru dengan struktur kolom yang diinginkan.
- Ini mengelompokkan satu atau lebih kolom untuk membentuk tipe data baru
- Kolom ini akan memiliki nama dan tipe datanya sendiri
- Tipe rekaman dapat menerima data
- Sebagai satu record yang terdiri dari banyak kolom OR
- Itu dapat menerima nilai untuk satu kolom tertentu dari suatu catatan
- Tipe rekaman berarti tipe data baru. Setelah tipe record dibuat, tipe data tersebut akan disimpan sebagai tipe data baru di database dan tipe data yang sama akan digunakan untuk mendeklarasikan variabel dalam program.
- Ini akan menggunakan kata kunci 'JENIS' untuk menginstruksikan kompiler bahwa ia sedang membuat tipe data baru.
- Itu dapat dibuat di “tingkat basis data” yang dapat disimpan sebagai objek database, digunakan di seluruh database atau dapat dibuat di “tingkat subprogram”, yang hanya terlihat di dalam subprogram.
- Tipe rekaman tingkat basis data juga dapat dideklarasikan untuk kolom-kolom tabel sehingga kolom tunggal dapat menampung data yang kompleks.
- Data dalam tipe data ini dapat diakses dengan mengacu pada nama_variabelnya diikuti dengan operator titik (.) diikuti dengan nama_kolom yaitu ' . '
Sintaks deklarasi pada level database:
CREATE TYPE <type_name_db> IS RECORD ( <column 1> <datatype>, );
Pada sintaks pertama, kita dapat melihat kata kunci 'CREATE TYPE' yang menginstruksikan compiler untuk membuat tipe record bernama “type_name_db” dengan kolom yang ditentukan sebagai objek database.
Ini diberikan sebagai pernyataan individual dan tidak di dalam blok mana pun.
Sintaks deklarasi pada tingkat subprogram:
DECLARE TYPE <type_name> IS RECORD ( <columnl> <datatype>, ); BEGIN <execution_section>; END;
Dalam sintaksnya, kita membuat tipe record bernama “type_name” hanya di dalam subprogram.
Pada kedua metode deklarasi tersebut, cara mendefinisikan kolom dan tipe datanya serupa.
Contoh 1: Tipe RECORD sebagai Objek Database
Dalam program ini, kita akan melihat cara membuat “Jenis rekaman” sebagai objek database. Kita akan membuat record tipe 'emp_det' dengan empat kolom. Kolom dan tipe datanya adalah sebagai berikut:
- EMP_NO (NOMOR)
- EMP_NAME (VARCHAR2 (150))
- MANAJER (NOMOR)
- GAJI (JUMLAH)
CREATE TYPE emp_det IS OBJECT ( EMP_NO NUMBER, EMP_NAME VARCHAR2(150), MANAGER NUMBER, SALARY NUMBER ); /
Keluaran:
Type created
Penjelasan Kode:
- Kode di atas akan membuat tipe emp_det sebagai objek database.
- Ini akan memiliki 4 kolom emp_no, emp_name, manager dan gaji seperti yang ditentukan.
- Sekarang 'emp_det' mirip dengan yang lain tipe data (seperti NUMBER, VARCHAR@, dll.) Dan terlihat di seluruh database. Oleh karena itu ini dapat digunakan di seluruh database untuk mendeklarasikan variabel jenis ini.
Keluaran:
Membuat tipe 'emp_det' sebagai tipe rekaman di tingkat database.
Contoh 2: Jenis Catatan pada tingkat Subprogram- Akses tingkat kolom
Dalam contoh ini, kita akan melihat cara membuat tipe rekaman pada tingkat subprogram dan cara mengisi serta mengambil nilai darinya berdasarkan tingkat kolom.
Kita akan membuat 'emp_det' record_type di tingkat subprogram, dan kita akan menggunakan hal yang sama untuk mengisi dan menampilkan data darinya.
DECLARE TYPE emp_det IS RECORD ( EMP_NO NUMBER, EMP_NAME VARCHAR2(150), MANAGER NUMBER, SALARY NUMBER ); guru99_emp_rec emp_det; BEGIN guru99_emp_rec.emp_no:= 1001; guru99_emp_rec.emp_name:=:'XXX'; guru99_emp_rec.manager:= 1000; guru99_emp_rec.salary:=10000; dbms_output.put.line('Employee Detail'); dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no); dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name); dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary); dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager); END; /
Keluaran:
Employee Detail Employee Number: 1001 Employee Name: XXX Employee Salary: 10000 Employee Manager Number: 1000
Penjelasan Kode:
- Baris kode 2-8: Tipe record 'emp_det' dideklarasikan dengan kolom emp_no, emp_name, gaji dan pengelola tipe data NUMBER, VARCHAR2, NUMBER, NUMBER.
- Baris kode 9: Variabel guru99_emp_rec dideklarasikan sebagai tipe data 'emp_det'. Sekarang ini variabel dapat menampung nilai yang berisi keempat bidang/kolom di atas.
- Baris kode 11: Mengisi kolom 'emp_no' pada 'guru99_emp_rec' dengan nilai 1001.
- Baris kode 12: Mengisi kolom 'emp_name' pada 'guru99_emp_rec' dengan nilai XXX.
- Baris kode 13: Mengisi kolom 'manajer' 'guru99_emp_rec' dengan nilai 1000.
- Baris kode 14: Mengisi kolom 'gaji' 'guru99_emp_rec' dengan nilai 10000.
- Baris kode 15-19: Menampilkan nilai 'guru99_emp_rec' pada output.
Contoh 3: Tipe Rekam pada tingkat Subprogram-Akses tingkat baris
Dalam contoh ini, kita akan melihat cara membuat tipe record di tingkat subprogram dan cara mengisinya sebagai tingkat baris. Kita akan membuat 'emp_det' record_type di tingkat subprogram, dan kita akan menggunakan hal yang sama untuk mengisi dan menampilkan data darinya.
DECLARE TYPE emp_det IS RECORD ( EMP_NO NUMBER, EMP_NAME YARCHAR2( 150), MANAGER NUMBER, SALARY NUMBER ); guru99_emp_rec emp_det; BEGIN INSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000); COMMIT; SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002; dbms_output.put_line (‘Employee Detail’); dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no); dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name); dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary); dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager); END; /
Penjelasan Kode:
- Baris kode 2-8: Tipe record 'emp_det' dideklarasikan dengan kolom emp_no, emp_name, gaji dan pengelola tipe data NUMBER, VARCHAR2, NUMBER, NUMBER.
- Baris kode 9: Variabel guru99_emp_rec dideklarasikan sebagai tipe data 'emp_det'. Sekarang variabel ini dapat menampung nilai yang berisi keempat bidang/kolom di atas.
- Baris kode 11: Mengisi tabel emp dengan data 1002 sebagai emp_no, YYY sebagai emp_name, 15000 sebagai gaji dan 1000 sebagai nomor manajer.
- Baris kode 12: Melakukan transaksi penyisipan di atas.
- Baris kode 13: Mengisi variabel 'guru99_emp_rec' sebagai data tingkat baris dari kueri pemilihan nomor karyawan 1002.
- Baris kode 15-19: Menampilkan nilai 'guru99_emp_rec' pada output.
Keluaran:
Employee Detail Employee Number: 1002 Employee Name: YYY Employee Salary: 1000 Employee Manager Number: 15000
Catatan: Jenis rekaman hanya dapat diakses di tingkat kolom sambil mengarahkan nilainya ke mode keluaran apa pun.