PL/SQL - Tipe Data

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

PL/SQL - Data Types

Tipe Data dan Subtype Skalar PL/SQL

mari mulai dari dasar. Di PL/SQL, tipe data skalar adalah blok bangunan dari program kita. Mereka mewakili nilai tunggal, seperti angka atau teks.

Apa Itu Tipe Data Skalar?

Tipe data skalar adalah bentuk paling sederhana dari data di PL/SQL. Mereka seperti atom dalam universitas programming kita - unit kecil, tak dapat dibagi yang kita gunakan untuk membangun struktur yang lebih kompleks.

Berikut adalah contoh sederhana untuk mengilustrasikan tipe 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 tipe VARCHAR2, yang digunakan untuk menyimpan teks. Kita memberikan nilai 'John Doe' kepadanya. Ketika kita menjalankan kode ini, itu akan mencetak: "Nama saya adalah: John Doe".

Tipe Data Numerik PL/SQL dan Subtype

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

Tipe Data Numerik Umum

Tipe 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

Mari lihat contohnya:

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 sama dengan: ' || my_float);
DBMS_OUTPUT.PUT_LINE('Gaji saya adalah: $' || my_salary);
END;

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

Tipe Data Karakter PL/SQL dan Subtype

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

Tipe Data Karakter Umum

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

Berikut adalah bagaimana kita menggunakannya dalam praktek:

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 tipe CHAR menambahkan spasi ke string untuk mengisi panjang tetapnya.

Tipe Data Boolean PL/SQL

Tipe 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 sudah menikah.');
END IF;
END;

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

Tipe Data DateTime dan Interval PL/SQL

Saat bekerja dengan tanggal dan waktu, PL/SQL menyediakan tipe data spesifik untuk menangani nilai ini secara akurat.

Tipe Data DateTime Umum

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

Mari lihat contohnya:

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.

Tipe Data Large Object (LOB) PL/SQL

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

Tipe Data LOB Umum

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

Berikut adalah contoh sederhana penggunaannya:

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 CLOB dan menunjukkan bagaimana mendapatkan panjangnya.

Subtype Tertentu PL/SQL

PL/SQL memungkinkan Anda menciptakan subtype sendiri berdasarkan tipe data yang sudah ada. Ini dapat membantu membuat kode Anda lebih mudah dibaca dan diurus.

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 menciptakan subtype positive_number yang memastikan nilai selalu positif.

NULLs di PL/SQL

Akhirnya, mari bicarakan tentang nilai NULL. Di PL/SQL, NULL mewakili nilai yang tak diketahui atau tidak tersedia. Itu bukan sama seperti 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 adalah yang ada! Kita telah meliputi tipe data utama di PL/SQL. Ingat, memahami tipe data adalah sangat penting untuk menulis kode yang efisien dan bebas kesalahan. Terus latihan, dan segera Anda akan menjadi ahli PL/SQL!

Credits: Image by storyset