PL/SQL - Records: Panduan Awal untuk Data Terstruktur

Hai teman-teman, para ahli basis data masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia PL/SQL Records. Jangan khawatir jika Anda belum pernah menulis satu baris kode sebelumnya - saya akan menjadi panduan ramah Anda, dan kita akan menjelajahi topik ini bersama, langkah demi langkah. Pada akhir tutorial ini, Anda akan terkejut betapa banyak yang Anda pelajari!

PL/SQL - Records

Apa Itu Records dalam PL/SQL?

Sebelum kita masuk ke detailnya, mari kita mengerti apa itu records. Bayangkan Anda mengatur pesta ulang tahun, dan Anda perlu mencatat informasi tamu Anda. Anda mungkin menulis nama setiap orang, umur mereka, dan rasa kue favorit mereka. Dalam PL/SQL, sebuah record seperti daftar itu, tapi untuk menyimpan data yang berhubungan dalam satu unit.

Records memungkinkan kita untuk mengelompokkan jenis data yang berbeda bersamaan, membuat kode kita lebih terorganisir dan mudah dikelola. Itu seperti memiliki lemari filing super efisien untuk data Anda!

Sekarang, mari kita jelajahi tiga jenis record dalam PL/SQL:

  1. Records Berdasarkan Tabel
  2. Records Berdasarkan Cursor
  3. Records yang Ditentukan Pengguna

Records Berdasarkan Tabel

Records berdasarkan tabel seperti mengambil foto snapshot dari baris di tabel basis data Anda. Mereka secara otomatis mencocokkan struktur tabel, yang membuat mereka sangat mudah digunakan.

Misalnya, kita memiliki tabel yang disebut employees dengan kolom employee_id, first_name, last_name, dan salary. Berikut adalah cara kita dapat membuat dan menggunakan record berdasarkan tabel:

DECLARE
emp_record employees%ROWTYPE;
BEGIN
SELECT * INTO emp_record
FROM employees
WHERE employee_id = 101;

DBMS_OUTPUT.PUT_LINE('Nama Karyawan: ' || emp_record.first_name || ' ' || emp_record.last_name);
DBMS_OUTPUT.PUT_LINE('Gaji: $' || emp_record.salary);
END;
/

Dalam contoh ini, emp_record dideklarasikan sebagai record yang cocok dengan struktur tabel employees. Kemudian kita memilih satu baris dari tabel dan menyimpannya dalam record kita. Akhirnya, kita mencetak informasi dari record.

Itu seperti mengisi formulir yang sudah dirancang untuk cocok dengan basis data karyawan Anda. Itu cepat, mudah, dan memastikan semua informasimu sepenuhnya!

Records Berdasarkan Cursor

Records berdasarkan cursor mirip dengan records berdasarkan tabel, tapi mereka berdasarkan cursor bukan tabel. Sebuah cursor seperti pointer yang dapat menavigasi hasil queri.

Berikut adalah contoh penggunaan record berdasarkan cursor:

DECLARE
CURSOR emp_cursor IS
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE department_id = 60;

emp_record emp_cursor%ROWTYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO emp_record;
EXIT WHEN emp_cursor%NOTFOUND;

DBMS_OUTPUT.PUT_LINE('ID Karyawan: ' || emp_record.employee_id);
DBMS_OUTPUT.PUT_LINE('Nama: ' || emp_record.first_name || ' ' || emp_record.last_name);
DBMS_OUTPUT.PUT_LINE('Gaji: $' || emp_record.salary);
DBMS_OUTPUT.PUT_LINE('---');
END LOOP;
CLOSE emp_cursor;
END;
/

Dalam contoh ini, kita mendefinisikan cursor yang memilih kolom tertentu dari tabel employees. Kemudian kita mendeklarasikan record berdasarkan cursor ini dan menggunakannya untuk mengambil dan menampilkan informasi untuk setiap karyawan di departemen 60.

Bayangkan Anda adalah detektif yang mengikuti jejak petunjuk. Cursor adalah kacamata perbesar Anda, dan setiap kali Anda menemukan petunjuk (atau dalam hal ini, seorang karyawan), Anda mencatat rincian di catatan Anda (record).

Records yang Ditentukan Pengguna

Records yang ditentukan pengguna adalah jenis yang paling fleksibel. Anda dapat membuat struktur khusus Anda sendiri untuk menyimpan data yang Anda butuhkan. Itu seperti merancang formulir Anda sendiri dari awal!

Berikut adalah cara Anda dapat membuat dan menggunakan record yang ditentukan pengguna:

DECLARE
TYPE book_record_type IS RECORD (
title VARCHAR2(100),
author VARCHAR2(50),
publication_year NUMBER,
is_bestseller BOOLEAN
);

my_favorite_book book_record_type;
BEGIN
my_favorite_book.title := 'The Hitchhiker''s Guide to the Galaxy';
my_favorite_book.author := 'Douglas Adams';
my_favorite_book.publication_year := 1979;
my_favorite_book.is_bestseller := TRUE;

DBMS_OUTPUT.PUT_LINE('Buku favorit saya adalah "' || my_favorite_book.title || '"');
DBMS_OUTPUT.PUT_LINE('Itu ditulis oleh ' || my_favorite_book.author || ' pada tahun ' || my_favorite_book.publication_year);

IF my_favorite_book.is_bestseller THEN
DBMS_OUTPUT.PUT_LINE('Itu adalah buku bestseller!');
ELSE
DBMS_OUTPUT.PUT_LINE('Itu adalah permata tersembunyi.');
END IF;
END;
/

Dalam contoh ini, kita mendefinisikan jenis record khusus book_record_type. Kemudian kita membuat record jenis ini dan mengisi informasinya tentang buku favorit kita. Akhirnya, kita mencetak rincian dan memeriksa apakah itu buku bestseller.

Records yang ditentukan pengguna adalah seperti membuat resep Anda sendiri. Anda menentukan tepat jenis bahan (field) yang Anda butuhkan, dan dalam apa persentase!

Perbandingan Jenis Records

Untuk membantu Anda memahami kapan untuk menggunakan jenis record tertentu, ini adalah tabel perbandingan yang praktis:

Jenis Record Use Case Pros Cons
Berdasarkan Tabel Saat bekerja dengan data yang cocok dengan struktur tabel Mudah digunakan, secara otomatis cocok dengan struktur tabel Terbatas ke struktur tabel yang sudah ada
Berdasarkan Cursor Saat bekerja dengan hasil queri Fleksibel, dapat berdasarkan queri yang kompleks Memerlukan manajemen cursor
Ditentukan Pengguna Saat Anda memerlukan struktur data khusus Paling fleksibel, dapat menyimpan kombinasi jenis data apa pun Memerlukan lebih banyak kode setup

Kesimpulan

Dan begitu saja, para pelajar yang antusias! Kita telah berpergian melalui negeri PL/SQL Records, dari kemudahan records berdasarkan tabel ke fleksibilitas records yang ditentukan pengguna. Ingat, memilih jenis record yang tepat adalah seperti memilih alat yang tepat untuk pekerjaan - itu dapat membuat hidup coding Anda lebih mudah.

Buat terus latihan, tetap curiga, dan sebelum Anda tahu, Anda akan mencraft records PL/SQL seperti seorang ahli. Selamat coding, dan semoga basis data Anda selalu terstruktur dan queri Anda cepat!

Credits: Image by storyset