Oracle PL / SQL Records Type dengan Contoh

Daftar Isi:

Anonim

Apa itu Jenis Rekaman?

Tipe Record adalah tipe data kompleks yang memungkinkan programmer 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 ATAU
    • Itu dapat menerima nilai untuk satu kolom tertentu dari sebuah record
  • Tipe rekaman berarti tipe data baru. Setelah tipe record dibuat, itu akan disimpan sebagai tipe data baru dalam database dan hal yang sama akan digunakan untuk mendeklarasikan variabel dalam program.
  • Ini akan menggunakan kata kunci 'TYPE' untuk menginstruksikan compiler bahwa itu membuat tipe data baru.
  • Ini dapat dibuat di " level database" yang dapat disimpan sebagai objek database, digunakan di seluruh database atau dapat dibuat di " level subprogram" , yang hanya terlihat di dalam subprogram.
  • Tipe record level database juga bisa dideklarasikan untuk kolom tabel sehingga satu kolom bisa menampung data yang kompleks.
  • Data dalam tipe data ini dapat diakses dengan mengacu pada variable_name diikuti oleh period operator (.) Diikuti dengan column_name yaitu '. '

Sintaks untuk deklarasi di tingkat database:

CREATE TYPE  IS RECORD( ,);

Pada sintaks pertama, kita dapat melihat kata kunci 'CREATE TYPE' ini menginstruksikan compiler untuk membuat tipe record bernama "type_name_db" dengan kolom yang ditentukan sebagai objek database.

Ini diberikan sebagai pernyataan individu dan tidak di dalam blok mana pun.

Sintaks untuk deklarasi di tingkat subprogram:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

Dalam sintaks, kami membuat jenis record bernama "type_name" hanya di dalam subprogram.

Dalam kedua metode deklarasi tersebut, cara mendefinisikan kolom dan tipe datanya serupa.

Contoh 1: Jenis RECORD sebagai Objek Database

Dalam program ini, kita akan melihat bagaimana membuat "Tipe rekaman" sebagai objek database. Kami akan membuat jenis record 'emp_det' dengan empat kolom. Kolom dan tipe datanya adalah sebagai berikut:

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • MANAJER (NOMOR)
  • GAJI (NOMOR)
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, manajer dan gaji seperti yang ditentukan.
  • Sekarang 'emp_det' mirip dengan tipe data lainnya (seperti NOMOR, VARCHAR @, dll.) Dan itu terlihat di seluruh database. Karenanya ini dapat digunakan di seluruh database untuk mendeklarasikan variabel jenis ini.

Keluaran:

Membuat tipe 'emp_det' sebagai tipe record di level database.

Contoh 2: Jenis Rekaman di tingkat Subprogram- Akses tingkat kolom

Dalam contoh ini, kita akan melihat bagaimana membuat tipe record pada level subprogram dan bagaimana mengisi dan mengambil nilai dari level kolom.

Kami akan membuat 'emp_det' record_type di tingkat subprogram, dan kami akan menggunakan yang sama untuk mengisi dan menampilkan data darinya.

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGINguru99_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 DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000

Penjelasan Kode:

  • Baris kode 2-8 : Jenis record 'emp_det' dideklarasikan dengan kolom emp_no, emp_name, gaji dan manajer tipe data NOMOR, VARCHAR2, NOMOR, NOMOR.
  • Baris kode 9: variabel guru99_emp_rec dideklarasikan sebagai tipe data 'emp_det'. Sekarang variabel ini dapat menampung nilai yang berisi semua 4 bidang / kolom di atas.
  • Baris kode 11: Mengisi bidang 'emp_no' dari 'guru99_emp_rec' dengan nilai 1001.
  • Baris kode 12: Mengisi bidang 'emp_name' dari 'guru99_emp_rec' dengan nilai XXX.
  • Baris kode 13: Mengisi bidang 'manajer' dari 'guru99_emp_rec' dengan nilai 1000.
  • Baris kode 14: Mengisi bidang 'gaji' dari 'guru99_emp_rec' dengan nilai 10000.
  • Baris kode 15-19: Menampilkan nilai 'guru99_emp_rec' dalam keluaran.

Contoh 3: Jenis Rekaman di tingkat Subprogram-Tingkat akses baris

Dalam contoh ini, kita akan melihat cara membuat tipe rekaman di tingkat subprogram dan cara mengisinya sebagai tingkat baris. Kami akan membuat 'emp_det' record_type di tingkat subprogram, dan kami akan menggunakan yang sama untuk mengisi dan menampilkan data darinya.

DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME YARCHAR2( 150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGININSERT 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 : Jenis record 'emp_det' dideklarasikan dengan kolom emp_no, emp_name, gaji dan manajer tipe data NOMOR, VARCHAR2, NOMOR, NOMOR.
  • Baris kode 9: variabel guru99_emp_rec dideklarasikan sebagai tipe data 'emp_det'. Sekarang variabel ini dapat menampung nilai yang berisi semua 4 bidang / kolom di atas.
  • Baris kode 11: Mengisi emp tabel dengan data 1002 sebagai emp_no, YYY sebagai emp_name, 15000 sebagai gaji dan 1000 sebagai nomor manajer.
  • Baris kode 12: Melakukan transaksi sisipan di atas.
  • Baris kode 13: Mengisi variabel 'guru99_emp_rec' sebagai data tingkat baris dari kueri pemilihan untuk nomor karyawan 1002.
  • Baris kode 15-19: Menampilkan nilai 'guru99_emp_rec' dalam keluaran.

Keluaran:

Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000

Catatan: Jenis catatan hanya dapat diakses di tingkat kolom sambil mengarahkan nilainya ke mode keluaran apa pun.