Oracle Jenis Catatan PL/SQL dengan Contoh

โšก Ringkasan Cerdas

Tipe data Record PL/SQL adalah tipe data kompleks yang mengelompokkan beberapa kolom, masing-masing dengan nama dan tipe datanya sendiri, menjadi satu tipe baru. Sebuah record dapat didefinisikan pada tingkat basis data sebagai objek tersimpan atau di dalam subprogram, dan field-fieldnya diakses dengan operator titik.

  • ๐Ÿงฑ Definisi: Tipe data record mengelompokkan satu atau lebih kolom menjadi satu tipe data baru.
  • ๐Ÿ”‘ kata kunci: Kata kunci TYPE memberi tahu kompiler bahwa tipe data baru sedang dibuat.
  • ๏ธ Dua Tingkat: Sebuah record tingkat basis data adalah objek yang tersimpan; sebuah record tingkat subprogram hanya terlihat di dalam subprogram tersebut.
  • ๐Ÿ”— Akses Lapangan: Kolom diakses sebagai record_variable.column_name menggunakan operator titik.
  • ๐Ÿ“ฅ Tingkat kolom: Nilai hanya dapat diberikan pada satu kolom dalam satu waktu.
  • ๐Ÿ“ฆ Tingkat baris: Perintah SELECT INTO dapat mengisi seluruh data dari satu baris tabel.
  • ๐Ÿงฉ Jenis Rekaman: %ROWTYPE berbasis tabel, %ROWTYPE berbasis kursor, dan record yang ditentukan oleh programmer.

Oracle Jenis Catatan PL/SQL

Apa itu Tipe Rekaman?

Tipe data record adalah tipe data kompleks yang memungkinkan programmer untuk membuat tipe data baru dengan struktur kolom yang diinginkan. Karakteristik utamanya adalah:

  • Fungsi ini mengelompokkan satu atau lebih kolom untuk membentuk tipe data baru.
  • Masing-masing kolom ini memiliki nama dan tipe data tersendiri.
  • Tipe data record dapat menerima data sebagai satu record tunggal yang terdiri dari banyak kolom, atau dapat menerima nilai untuk satu kolom tertentu dari sebuah record.
  • Tipe data record hanyalah tipe data baru. Setelah dibuat, tipe data ini disimpan sebagai tipe data baru dan dapat digunakan untuk mendeklarasikan variabel dalam program.
  • Ini menggunakan kata kunci 'JENIS' untuk memberi tahu kompiler bahwa tipe data baru sedang dibuat.
  • Hal itu dapat dibuat di tingkat basis data, disimpan sebagai objek basis data dan digunakan di seluruh basis data, atau pada tingkat subprogram, hanya terlihat di dalam subprogram.
  • Tipe data record tingkat database juga dapat dideklarasikan untuk kolom tabel, sehingga satu kolom dapat menyimpan data yang kompleks.
  • Data diakses dengan merujuk pada nama variabel, kemudian operator titik (.), lalu nama kolom, seperti ' . '.

Sintaks untuk Mendeklarasikan Tipe Record

Sintaks deklarasi pada level database:

Deklarasi tipe record pada tingkat basis data

CREATE TYPE <type_name_db> IS RECORD
(
<column 1> <datatype>,
);

Pada sintaks pertama, kata kunci 'CREATE TYPE' menginstruksikan kompiler untuk membuat tipe record bernama โ€œtype_name_dbโ€ dengan kolom yang ditentukan sebagai objek basis data. Ini diberikan sebagai pernyataan individual, bukan di dalam blok apa pun.

Sintaks untuk deklarasi pada tingkat subprogram:

Deklarasi tipe record pada tingkat subprogram

DECLARE
TYPE <type_name> IS RECORD
(
<column1> <datatype>,
);
BEGIN
<execution_section>;
END;

Dalam sintaks ini, kita membuat tipe record bernama โ€œtype_nameโ€ hanya di dalam subprogram. Pada kedua metode tersebut, cara mendefinisikan kolom dan tipe data serupa.

Contoh 1: Tipe Rekaman sebagai Objek Basis Data

Dalam program ini, kita akan melihat cara membuat tipe data record sebagai objek basis data. Kita akan membuat tipe data record 'emp_det' dengan empat kolom. Kolom dan tipe datanya adalah:

  • 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

Code Penjelasan

  • Kode di atas membuat tipe emp_det sebagai objek basis data.
  • Tabel tersebut memiliki 4 kolom: emp_no, emp_name, manager, dan salary, sebagaimana telah didefinisikan.
  • Sekarang 'emp_det' mirip dengan yang lainnya. tipe data (seperti NUMBER atau VARCHAR2) dan terlihat di seluruh basis data. Oleh karena itu, dapat digunakan di mana saja dalam basis data untuk mendeklarasikan variabel dengan tipe ini.

Contoh 2: Tingkat Subprogram, Akses Tingkat Kolom

Dalam contoh ini, kita akan melihat cara membuat tipe data record pada tingkat subprogram dan cara mengisi serta mengambil nilai darinya berdasarkan kolom. Kita membuat tipe data record 'emp_det' pada tingkat subprogram dan menggunakannya untuk mengisi dan menampilkan data.

Contoh akses tingkat kolom tipe record

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

Code Penjelasan

  • Code baris 2-8: Tipe data 'emp_det' dideklarasikan dengan kolom emp_no, emp_name, manager, dan salary dengan tipe data NUMBER, VARCHAR2, NUMBER, dan NUMBER.
  • Code baris 9: Variabel guru99_emp_rec dideklarasikan sebagai tipe data 'emp_det'. Ini variabel dapat menyimpan nilai yang berisi keempat bidang tersebut.
  • Code baris 11: Mengisi kolom 'emp_no' pada 'guru99_emp_rec' dengan nilai 1001.
  • Code baris 12: Mengisi kolom 'emp_name' dengan nilai XXX.
  • Code baris 13: Mengisi kolom 'manajer' dengan nilai 1000.
  • Code baris 14: Mengisi kolom 'gaji' dengan nilai 10000.
  • Code baris 15-19: Menampilkan nilai 'guru99_emp_rec' dalam output.

Contoh 3: Tingkat Subprogram, Akses Tingkat Baris

Dalam contoh ini, kita akan melihat cara membuat tipe data record pada tingkat subprogram dan mengisinya pada tingkat baris. Kita membuat tipe data record 'emp_det' pada tingkat subprogram dan menggunakannya untuk mengisi dan menampilkan data.

Contoh akses tingkat baris tipe record

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER,
EMP_NAME VARCHAR2(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;
/

Code Penjelasan

  • Code baris 2-8: Tipe data 'emp_det' dideklarasikan dengan kolom emp_no, emp_name, manager, dan salary dengan tipe data NUMBER, VARCHAR2, NUMBER, dan NUMBER.
  • Code baris 9: Variabel guru99_emp_rec dideklarasikan sebagai tipe data 'emp_det' dan dapat menampung keempat field tersebut.
  • Code baris 11: Mengisi tabel emp dengan 1002 sebagai emp_no, YYY sebagai emp_name, 15000 sebagai salary, dan 1000 sebagai manager number.
  • Code baris 12: Melakukan transaksi penyisipan.
  • Code baris 13: Mengisi variabel 'guru99_emp_rec' pada tingkat baris dari kueri select untuk nomor karyawan 1002.
  • Code baris 15-19: Menampilkan nilai 'guru99_emp_rec' dalam output.

Keluaran:

Employee Detail
Employee Number: 1002
Employee Name: YYY
Employee Salary: 1000
Employee Manager Number: 15000

Catatan: Tipe data record hanya dapat diakses pada level kolom saat mengalihkan nilainya ke mode output apa pun. Perhatikan bahwa dalam contoh ini urutan daftar SELECT tidak sesuai dengan urutan field record, itulah sebabnya nilai gaji dan manajer tampak tertukar dalam output.

Jenis-jenis Record PL/SQL

Di luar catatan yang ditentukan oleh programmer seperti yang ditunjukkan di atas, Oracle Menawarkan dua jenis record yang ditambatkan yang secara otomatis menyalin strukturnya. Menggunakannya menghindari deklarasi ulang kolom dan menjaga agar record tetap selaras dengan tabel atau kursor yang menjadi dasarnya.

Jenis catatan Dinyatakan dengan Struktur berasal dari
Catatan berbasis tabel nama_tabel%JENIS_BARIS Semua kolom dalam sebuah tabel
Rekaman berbasis kursor nama_kursor%JENIS_BARIS Daftar pilihan kursor
Rekaman yang ditentukan oleh programmer JENIS โ€ฆ ADALAH REKAMAN Kolom yang Anda daftarkan secara manual

Record %ROWTYPE adalah pilihan teraman ketika bentuknya harus mengikuti tabel atau kursor, karena perubahan kolom akan terdeteksi secara otomatis pada kompilasi berikutnya.

Pertanyaan Umum Demo Slot

Sebuah record mengelompokkan kolom-kolom yang mungkin berbeda tipe ke dalam satu struktur seperti baris. Sebuah collection menyimpan banyak elemen dengan tipe yang sama yang diindeks oleh subskrip. Keduanya sering digabungkan, menjadi sebuah collection of record.

%ROWTYPE mendeklarasikan sebuah record yang field-field-nya secara otomatis cocok dengan tabel atau kursor. Gunakan ini ketika record tersebut harus mencerminkan sumbernya, sehingga perubahan kolom akan tercermin tanpa perlu mengedit deklarasi.

Ya, jika kedua record tersebut bertipe sama. SELECT INTO juga dapat mengisi seluruh record dari baris tabel, asalkan urutan daftar pilihan sesuai dengan urutan field pada record tersebut.

Ya. AI dapat membaca definisi tabel dan menghasilkan blok TYPE โ€ฆ IS RECORD yang sesuai, atau merekomendasikan %ROWTYPE jika tautan langsung ke tabel lebih disukai. Verifikasi tipe data sebelum digunakan.

Sebuah record tingkat basis data dibuat dengan perintah CREATE TYPE dan disimpan sebagai objek yang terlihat di seluruh basis data. Sebuah record tingkat subprogram dideklarasikan di dalam sebuah blok dan hanya ada di dalam subprogram tersebut.

Ringkaslah postingan ini dengan: