Jenis Rekod Oracle PL / SQL dengan Contoh

Isi kandungan:

Anonim

Apakah Jenis Rekod?

Jenis Rekod adalah jenis data yang kompleks yang membolehkan pengaturcara membuat jenis data baru dengan struktur lajur yang diinginkan.

  • Ia mengumpulkan satu atau lebih lajur untuk membentuk jenis data baru
  • Lajur ini akan mempunyai nama dan jenis data tersendiri
  • Jenis Rekod boleh menerima data
    • Sebagai satu rekod yang terdiri daripada banyak lajur ATAU
    • Ia boleh menerima nilai untuk satu lajur tertentu dalam rekod
  • Jenis rekod bermaksud jenis data baru. Setelah jenis rekod dibuat, ia akan disimpan sebagai jenis data baru dalam pangkalan data dan yang sama akan digunakan untuk menyatakan pemboleh ubah dalam program.
  • Ia akan menggunakan kata kunci 'JENIS' untuk memberi petunjuk kepada penyusun bahawa ia membuat jenis data baru.
  • Ini dapat dibuat pada " tingkat pangkalan data" yang dapat disimpan sebagai objek pangkalan data, digunakan seluruh pangkalan data atau dapat dibuat pada " tingkat subprogram" , yang hanya dapat dilihat di dalam subprogram.
  • Jenis rekod tahap pangkalan data juga dapat dinyatakan untuk lajur jadual sehingga satu lajur dapat menyimpan data yang kompleks.
  • Data dalam jenis data ini dapat diakses dengan merujuk pada nama variabel mereka diikuti oleh operator periode (.) Diikuti dengan nama kolom iaitu '. '

Sintaks untuk pengisytiharan di peringkat pangkalan data:

CREATE TYPE  IS RECORD( ,);

Dalam sintaks pertama, kita dapat melihat kata kunci 'BUAT JENIS' ini memerintahkan pengkompil untuk membuat jenis rekod bernama "type_name_db" dengan lajur yang ditentukan sebagai objek pangkalan data.

Ini diberikan sebagai pernyataan individu dan bukan di dalam blok apa pun.

Sintaks untuk pengisytiharan di peringkat subprogram:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

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

Dalam kedua-dua kaedah deklarasi, cara menentukan lajur dan jenis data serupa.

Contoh 1: Jenis REKOD sebagai Objek Pangkalan Data

Dalam program ini, kita akan melihat bagaimana membuat "Jenis rekod" sebagai objek pangkalan data. Kami akan membuat jenis rekod 'emp_det' dengan empat lajur. Lajur dan jenis datanya adalah seperti berikut:

  • EMP_NO (NOMBOR)
  • EMP_NAME (VARCHAR2 (150))
  • PENGURUS (NOMBOR)
  • GAJI (NOMBOR)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/
Pengeluaran:
Type created

Penjelasan Kod:

  • Kod di atas akan membuat jenis emp_det sebagai objek pangkalan data.
  • Ia akan mempunyai 4 kolom emp_no, emp_name, manager dan gaji seperti yang ditentukan.
  • Sekarang 'emp_det' serupa dengan jenis data lain (seperti NOMBOR, VARCHAR @, dll.) Dan ia dapat dilihat di seluruh pangkalan data. Oleh itu ini boleh digunakan di seluruh pangkalan data untuk menyatakan pemboleh ubah jenis ini.

Pengeluaran:

Membuat jenis 'emp_det' sebagai jenis rekod di peringkat pangkalan data.

Contoh 2: Jenis Rekod di peringkat Subprogram- Akses tahap kolum

Dalam contoh ini, kita akan melihat bagaimana membuat jenis rekod pada tahap subprogram dan bagaimana mengisi dan mengambil nilai darinya berdasarkan tahap lajur.

Kami akan membuat 'emp_det' record_type pada tingkat subprogram, dan kami akan menggunakan yang sama untuk mengisi dan memaparkan 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;/

Pengeluaran:

Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000

Penjelasan Kod:

  • Baris kod 2-8 : Jenis rekod 'emp_det' dinyatakan dengan lajur emp_no, emp_name, gaji dan pengurus jenis data NOMBOR, VARCHAR2, NOMOR, NOMBOR.
  • Baris kod 9: pemboleh ubah guru99_emp_rec dinyatakan sebagai jenis data 'emp_det'. Sekarang pemboleh ubah ini dapat menahan nilai yang mengandungi semua 4 bidang / lajur di atas.
  • Baris kod 11: Mengisi medan 'emp_no' 'guru99_emp_rec' dengan nilai 1001.
  • Baris kod 12: Mengisi medan 'emp_name' 'guru99_emp_rec' dengan nilai XXX.
  • Baris kod 13: Mengisi bidang 'pengurus' 'guru99_emp_rec' dengan nilai 1000.
  • Baris kod 14: Mengisi bidang 'gaji' 'guru99_emp_rec' dengan nilai 10000.
  • Baris kod 15-19: Menampilkan nilai 'guru99_emp_rec' dalam output.

Contoh 3: Jenis Rekod pada tahap Subprogram-Akses tahap baris

Dalam contoh ini, kita akan melihat bagaimana membuat jenis rekod pada tahap subprogram dan bagaimana mengisi sebagai tahap baris. Kami akan membuat 'emp_det' record_type pada tingkat subprogram, dan kami akan menggunakan yang sama untuk mengisi dan memaparkan 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 Kod:

  • Baris kod 2-8 : Jenis rekod 'emp_det' dinyatakan dengan lajur emp_no, emp_name, gaji dan pengurus jenis data NOMBOR, VARCHAR2, NOMOR, NOMBOR.
  • Baris kod 9: pemboleh ubah guru99_emp_rec dinyatakan sebagai jenis data 'emp_det'. Sekarang pemboleh ubah ini dapat menahan nilai yang mengandungi semua 4 bidang / lajur di atas.
  • Baris kod 11: Mengisi emp jadual dengan data 1002 sebagai emp_no, YYY sebagai emp_name, 15000 sebagai gaji dan 1000 sebagai nombor pengurus.
  • Baris kod 12: Melakukan transaksi memasukkan di atas.
  • Baris kod 13: Mengisi pemboleh ubah 'guru99_emp_rec' sebagai data tahap baris dari pertanyaan terpilih untuk nombor pekerja 1002.
  • Baris kod 15-19: Menampilkan nilai 'guru99_emp_rec' dalam output.

Pengeluaran:

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

Catatan: Jenis rakaman hanya dapat diakses di tingkat lajur sambil mengalihkan nilainya ke mod output apa pun.