PL/SQL - Jenis Data

Hai, para pemrogram yang sedang belajar! Hari ini, kita akan melihat dunia yang menarik jenis data PL/SQL. Jangan khawatir jika Anda baru saja memulai pemrograman; saya akan memandu Anda dalam perjalanan ini langkah demi langkah. Pada akhir tutorial ini, Anda akan merasa nyaman dengan berbagai jenis data di PL/SQL dan siap untuk memulai petualangan coding Anda!

PL/SQL - Data Types

Jenis Data Skalar PL/SQL dan Subtipe

Ayo mulai dari dasar. Dalam PL/SQL, jenis data skalar adalah fondasi dari program kita. Mereka mewakili nilai tunggal, seperti angka atau teks.

Apa Itu Jenis Data Skalar?

Jenis data skalar adalah bentuk paling sederhana dari data di PL/SQL. Mereka seperti atom dari universitas pemrograman kita - unit kecil, tak terbagi yang kita gunakan untuk membangun struktur yang lebih kompleks.

Berikut adalah contoh sederhana untuk mengilustrasikan jenis data skalar:

DECLARE
my_name VARCHAR2(50) := 'John Doe';
BEGIN
DBMS_OUTPUT.PUT_LINE('Nama saya adalah: ' || my_name);
END;

Dalam contoh ini, my_name adalah variabel jenis VARCHAR2, yang digunakan untuk menyimpan teks. Kita telah memberikannya nilai 'John Doe'. Ketika kita menjalankan kode ini, itu akan mengeluarkan: "Nama saya adalah: John Doe".

Jenis Data Numerik PL/SQL dan Subtipe

Sekarang, mari bicarakan tentang angka. PL/SQL memiliki beberapa jenis data numerik untuk menangani jenis angka yang berbeda.

Jenis Data Numerik Umum

Jenis Data Deskripsi Contoh
NUMBER Angka umum NUMBER(10,2)
INTEGER Angka bulat INTEGER
BINARY_FLOAT Angka pecahan 32-bit BINARY_FLOAT
BINARY_DOUBLE Angka pecahan 64-bit BINARY_DOUBLE

Ayo lihat ini dalam aksi:

DECLARE
my_integer INTEGER := 42;
my_float BINARY_FLOAT := 3.14;
my_salary NUMBER(8,2) := 5000.50;
BEGIN
DBMS_OUTPUT.PUT_LINE('Jawabannya adalah: ' || my_integer);
DBMS_OUTPUT.PUT_LINE('Pi hampir adalah: ' || my_float);
DBMS_OUTPUT.PUT_LINE('Gaji saya adalah: $' || my_salary);
END;

Skrip ini mendeklarasikan tiga variabel dengan jenis numerik yang berbeda. Jenis NUMBER(8,2) untuk my_salary berarti itu dapat menyimpan hingga 8 digit secara keseluruhan, dengan 2 digit setelah titik desimal.

Jenis Data Karakter PL/SQL dan Subtipe

Data teks sangat penting dalam pemrograman. PL/SQL menyediakan beberapa jenis data karakter untuk menangani teks secara efisien.

Jenis Data Karakter Umum

Jenis Data Deskripsi Contoh
VARCHAR2 String panjang variabel VARCHAR2(100)
CHAR String panjang tetap CHAR(10)
NVARCHAR2 String unicode panjang variabel NVARCHAR2(100)
NCHAR String unicode panjang tetap NCHAR(10)

Berikut adalah bagaimana kita menggunakannya dalam praktik:

DECLARE
my_varchar VARCHAR2(50) := 'Hello, World!';
my_char CHAR(10) := 'Fixed     ';
my_nvarchar NVARCHAR2(50) := N'こんにちは'; -- "Hello" dalam Bahasa Jepang
BEGIN
DBMS_OUTPUT.PUT_LINE('VARCHAR2: ' || my_varchar);
DBMS_OUTPUT.PUT_LINE('CHAR: ' || my_char || '(akhir)');
DBMS_OUTPUT.PUT_LINE('NVARCHAR2: ' || my_nvarchar);
END;

Perhatikan bagaimana jenis CHAR menambahkan spasi ke string untuk mengisi panjang tetapnya.

Jenis Data Boolean PL/SQL

Jenis data boolean sangat penting untuk membuat keputusan dalam program kita. Mereka hanya dapat memiliki tiga nilai: TRUE, FALSE, atau NULL.

DECLARE
is_student BOOLEAN := TRUE;
has_job BOOLEAN := FALSE;
is_married BOOLEAN;
BEGIN
IF is_student THEN
DBMS_OUTPUT.PUT_LINE('Orang ini adalah pelajar.');
END IF;

IF NOT has_job THEN
DBMS_OUTPUT.PUT_LINE('Orang ini tidak memiliki pekerjaan.');
END IF;

IF is_married IS NULL THEN
DBMS_OUTPUT.PUT_LINE('Kami tidak tahu apakah orang ini menikah.');
END IF;
END;

Skrip ini menunjukkan bagaimana kita menggunakan nilai boolean untuk membuat keputusan dalam kode kita.

Jenis Data Tanggal dan Interval PL/SQL

Ketika bekerja dengan tanggal dan waktu, PL/SQL menyediakan jenis data khusus untuk menangani nilai ini dengan akurasi.

Jenis Data Tanggal Umum

Jenis Data Deskripsi Contoh
DATE Tanggal dan waktu DATE
TIMESTAMP Tanggal dan waktu dengan detik pecahan TIMESTAMP
INTERVAL YEAR TO MONTH Periode waktu dalam tahun dan bulan INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND Periode waktu dalam hari, jam, menit, dan detik INTERVAL DAY TO SECOND

Ayo lihat ini dalam aksi:

DECLARE
current_date DATE := SYSDATE;
future_date TIMESTAMP := SYSTIMESTAMP + INTERVAL '1' YEAR;
age_interval INTERVAL YEAR TO MONTH;
BEGIN
age_interval := (SYSDATE - TO_DATE('1990-01-01', 'YYYY-MM-DD')) YEAR TO MONTH;

DBMS_OUTPUT.PUT_LINE('Tanggal saat ini: ' || TO_CHAR(current_date, 'DD-MON-YYYY'));
DBMS_OUTPUT.PUT_LINE('Tanggal setelah 1 tahun: ' || TO_CHAR(future_date, 'DD-MON-YYYY HH24:MI:SS.FF'));
DBMS_OUTPUT.PUT_LINE('Umur: ' || age_interval);
END;

Skrip ini menunjukkan bagaimana bekerja dengan tanggal, timestamp, dan interval.

Jenis Data Objek Besar PL/SQL

Untuk menangani jumlah besar data, PL/SQL menyediakan jenis data LOB (Large Object).

Jenis Data LOB Umum

Jenis Data Deskripsi Contoh
CLOB Character Large Object CLOB
BLOB Binary Large Object BLOB
NCLOB National Character Large Object NCLOB

Berikut adalah contoh sederhana penggunaan CLOB:

DECLARE
my_clob CLOB;
BEGIN
my_clob := 'Ini adalah string yang sangat panjang dan mungkin berjumlah beberapa megabyte.';
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.GETLENGTH(my_clob) || ' karakter panjang');
END;

Skrip ini membuat sebuah CLOB dan menunjukkan bagaimana mendapatkan panjangnya.

Subtipe User-Defined PL/SQL

PL/SQL mengijinkan Anda membuat subtipe Anda sendiri berdasarkan jenis data yang sudah ada. Ini dapat membantu membuat kode Anda lebih mudah dibaca dan dipelihara.

DECLARE
SUBTYPE positive_number IS NUMBER(8,2) CHECK (positive_number > 0);
my_salary positive_number;
BEGIN
my_salary := 5000.50;
DBMS_OUTPUT.PUT_LINE('Gaji saya: $' || my_salary);

-- Ini akan menyebabkan kesalahan:
-- my_salary := -1000;
END;

Dalam contoh ini, kita membuat subtipe positive_number yang memastikan nilai selalu positif.

NULLs di PL/SQL

Akhirnya, mari bicarakan tentang nilai NULL. Dalam PL/SQL, NULL mewakili nilai yang tak diketahui atau tidak tersedia. Itu tidak sama dengan nol atau string kosong.

DECLARE
var1 NUMBER;
var2 VARCHAR2(10) := '';
BEGIN
IF var1 IS NULL THEN
DBMS_OUTPUT.PUT_LINE('var1 adalah NULL');
END IF;

IF var2 IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('var2 bukan NULL, itu adalah string kosong');
END IF;
END;

Skrip ini menunjukkan perbedaan antara NULL dan string kosong.

Dan itu saja! Kita telah meliputi jenis data utama di PL/SQL. Ingat, memahami jenis data sangat penting untuk menulis kode yang efisien dan bebas kesalahan. Terus latihan, dan segera Anda akan menjadi ahli PL/SQL!

Credits: Image by storyset