Stored Procedure II
LAPORAN PRAKTIKUM PERTEMUAN KE-10
STORED PROCEDURE II
DOSEN PENGAMPU
M. Reza Redo Islami, S.Kom., M.T.I.
Disusun oleh:
Nama : Rubby Ibnu Anantara
NPM : 24781025
Kelas : MI-4A
PROGRAM STUDI MANAJEMEN
INFORMATIKA
JURUSAN TEKNOLOGI
INFORMASI
POLITEKNIK NEGERI
LAMPUNG
2026
Mata Kuliah :
Pemrograman SQL II
Pertemuan :
10(Sepuluh)
Judul Praktikum :
Stored Procedure II
Waktu Pelaksanaan :
Selasa, 19 mei 2026
I. TUJUAN PRAKTIKUM
- Memahami
konsep Stored Procedure tingkat lanjut (Advanced Stored Procedure)
khususnya konsep parameterisasi dinamis dan alur kontrol di tingkat server
database.
- Memahami
landasan teoritis penggunaan multi-parameter input (IN) untuk penyaringan
data multikondisional yang presisi.
- Memahami
integrasi operasi penggabungan tabel (INNER JOIN) relasional di
dalam tubuh Stored Procedure untuk mempermudah penyajian data
terdistribusi.
- Memahami
penerapan fungsi agregasi SQL yang dikombinasikan dengan pengelompokan
data (GROUP BY) serta klausa penyaringan agregat (HAVING).
- Memahami
penggunaan struktur kontrol alur percabangan (Control Flow)
keputusan bertingkat (IF - ELSEIF - ELSE) untuk memproses logika
kondisional dinamis.
- Memahami
pemanfaatan parameter keluaran (OUT / OUTPUT) untuk mengembalikan
nilai skalar dari tubuh prosedur kembali ke program pemanggil.
- Memahami
enkapsulasi operasi Data Manipulation Language (DML) seperti
INSERT, UPDATE, dan DELETE dalam Stored Procedure untuk menjamin
integritas data.
- Memahami
komparasi teoretis dan sintaksis penulisan Stored Procedure antara dialek
MySQL/SQLite dan standar native T-SQL (Microsoft SQL Server / SSMS).
II. DASAR TEORI
A. Multi-Parameter Input (IN) pada Stored Procedure
Parameter input (IN) merupakan jenis parameter bawaan yang
berfungsi untuk mengirim nilai dari program pemanggil (user/aplikasi) ke dalam
Stored Procedure. Pada tingkat lanjut, penggunaan lebih dari satu parameter IN
memungkinkan penyaringan data yang sangat kompleks dan presisi.
Parameter-parameter tersebut dirancang untuk bekerja secara bersinergi di dalam
klausa WHERE dengan memanfaatkan operator logika:
- Operator
AND: Mengharuskan seluruh kondisi penyaringan terpenuhi secara
bersamaan (konjungsi logis).
- Operator
BETWEEN: Menyaring nilai berdasarkan suatu rentang inklusif (mulai
dari batas minimum hingga batas maksimum).
B. Integrasi Inner Join Relasional dalam Stored Procedure
Di dalam database relasional, redundansi diminimalkan dengan
memecah data ke dalam tabel-tabel master terpisah yang saling terhubung melalui
Foreign Key (kunci tamu). Untuk menampilkan informasi yang utuh,
digunakan kueri penggabungan tabel (JOIN).
Meletakkan kueri penggabungan tabel (seperti INNER JOIN atau
LEFT JOIN) di dalam Stored Procedure memberikan manfaat abstraksi yang luar
biasa bagi developer aplikasi:
- Menyembunyikan
kompleksitas fisik database: Pengguna cukup mengirimkan nilai ID
sederhana ke prosedur, dan database akan memproses JOIN bertingkat (bahkan
relasi 3 tabel atau lebih) secara internal untuk mengembalikan data siap
pakai.
- Meminimalkan
kesalahan penulisan kueri: Menghindari keharusan menulis ulang kueri
penggabungan yang panjang di setiap aplikasi client.
C. Fungsi Agregasi dengan GROUP BY & HAVING
Agregasi data kelompok merupakan pilar utama dalam
penyusunan laporan statistik di dalam database. Modul ini menekankan pemahaman
teoretis mengenai:
- Fungsi
Agregasi: COUNT (menghitung baris), AVG (menghitung rata-rata), SUM
(menjumlahkan nilai), MIN (mencari nilai terkecil), dan MAX (mencari nilai
terbesar).
- GROUP
BY: Mengelompokkan baris data yang memiliki kecocokan nilai pada satu
atau beberapa kolom tertentu ke dalam satu baris ringkasan (summary row).
- HAVING:
Berfungsi melakukan penyaringan (filtering) khusus terhadap
baris-baris ringkasan kelompok yang dihasilkan oleh GROUP BY. Perbedaan
krusial antara WHERE dan HAVING terletak pada domain kerjanya:
- WHERE
menyaring baris individual sebelum pengelompokan GROUP BY terjadi.
- HAVING
menyaring kelompok data hasil agregasi setelah GROUP BY selesai
dievaluasi.
- Presisi
Desimal (Rounding & Casting): Untuk menjamin format output desimal
yang konsisten, digunakan fungsi pembulatan seperti ROUND() pada
MySQL/SQLite, atau konversi casting tipe data CAST(nilai AS
DECIMAL(presisi, skala)) pada T-SQL (SQL Server) untuk memaksa format
desimal presisi tinggi.
D. Struktur Percabangan Keputusan Kondisional (Control
Flow)
Struktur keputusan logika memungkinkan server database
memilih untuk mengeksekusi blok instruksi SQL tertentu saja berdasarkan hasil
evaluasi boolean (TRUE/FALSE) dari kondisi yang ditentukan. Logika kondisional
di dalam Stored Procedure biasanya diterapkan menggunakan blok percabangan
IF-ELSEIF-ELSE.
- Cara
Kerja: Evaluasi dimulai dari kondisi pertama (IF). Jika bernilai benar
(TRUE), blok di bawahnya dieksekusi dan alur keluar dari struktur
percabangan. Jika salah (FALSE), evaluasi beralih ke kondisi berikutnya
(ELSEIF), dan jika tidak ada kondisi yang terpenuhi, blok cadangan
terakhir (ELSE) yang akan dieksekusi.
- Kegunaan:
Sangat berguna untuk membuat prosedur yang bersifat multiguna, di mana
satu prosedur yang sama dapat menampilkan variasi data berbeda (seperti
mode data aktif, mode lulus, atau mode semua data) tergantung nilai
kontrol yang dikirim.
E. Parameter Keluaran (OUT / OUTPUT) dan Variabel
Database
Berbeda dengan parameter IN yang bersifat searah (masuk),
parameter keluaran (OUT pada MySQL/SQLite, atau OUTPUT pada T-SQL) dirancang
untuk memindahkan data atau hasil kalkulasi dari dalam tubuh Stored Procedure
kembali ke program pemanggil.
- Konsep
Assignment (Penyalinan Data): Di dalam prosedur, nilai hasil kueri
skalar (seperti hasil COUNT atau MIN) disalin ke dalam parameter keluaran
ini.
- Cara
Pemanggilan: Program pemanggil harus mendeklarasikan variabel
penampung terlebih dahulu di luar prosedur, mengeksekusi prosedur dengan
mengaitkan variabel tersebut menggunakan pengenal output, kemudian
mencetak atau menyeleksi isi variabel tersebut untuk memunculkan hasilnya
ke layar.
- Perbedaan
Mekanisme:
- MySQL
menggunakan klausa SELECT ... INTO untuk menyalin hasil kueri ke
parameter.
- T-SQL
(SQL Server) menggunakan perintah penugasan langsung SELECT @var = kolom
atau SET @var = nilai.
F. Operasi Data Manipulation Language (DML)
Terenkapsulasi
Data Manipulation Language (DML) mencakup perintah
modifikasi data yaitu INSERT (penambahan baris), UPDATE (pembaruan data kolom),
dan DELETE (penghapusan data). Membungkus kueri DML ke dalam Stored Procedure
merupakan praktik terbaik (Best Practice) dalam desain keamanan basis
data karena alasan-alasan teoretis berikut:
- Enkapsulasi
& Abstraksi: Logika manipulasi data dibungkus rapi. Client tidak
perlu mengetahui tabel fisik mana saja yang terpengaruh oleh operasi
tersebut.
- Keamanan
Tingkat Tinggi (Least Privilege): Hak akses INSERT, UPDATE, dan DELETE
pada tabel-tabel sensitif dapat ditutup sepenuhnya untuk pengguna umum.
Pengguna cukup diberikan hak akses khusus EXECUTE pada Stored Procedure
tertentu saja, sehingga memperkecil celah eksploitasi data.
- Integritas
dan Standardisasi Data: Memastikan bahwa penambahan data baru
(misalnya pengisian angkatan default atau status awal aktif pada mahasiswa
baru) selalu dilakukan melalui format standar yang seragam tanpa
bergantung pada aplikasi luar.
III. KOMPARASI TEORITIS SINTAKSIS DIALEK (MYSQL VS T-SQL
SQL SERVER)
Berikut adalah matriks analisis perbedaan sintaksis teoretis
untuk implementasi Stored Procedure tingkat lanjut antara lingkungan
MySQL/SQLite (simulator) dan standar native T-SQL (Microsoft SQL Server
Management Studio / SSMS):
|
Kriteria
Evaluasi |
Lingkungan
MySQL / SQLite |
Standar
Native T-SQL (SSMS) |
|
Pembatas
Kueri |
Perlu
memodifikasi DELIMITER $$ |
Cukup
memisahkan antar-blok dengan GO |
|
Simbol
Variabel |
Nama variabel
polos tanpa awalan |
Wajib diawali
simbol @ (misalnya: @p_npm) |
|
Definisi
Parameter |
Ditulis
eksplisit IN atau OUT |
Menghapus IN,
mengubah OUT menjadi OUTPUT |
|
Blok
Pernyataan |
Ditandai
dengan BEGIN ... END$$ |
Ditandai
dengan blok BEGIN ... END |
|
Penugasan
Variabel |
Sintaksis
SELECT ... INTO var |
Sintaksis
SELECT @var = kolom / SET @var = nilai |
|
Logika IF
Bertingkat |
IF ... THEN
... ELSEIF ... END IF; |
IF ... BEGIN
... END ELSE IF ... |
|
Penanganan
NULL |
Menggunakan
fungsi IFNULL(a, b) |
Menggunakan
fungsi ISNULL(a, b) |
|
Pemanggilan
Prosedur |
Perintah CALL
nama_prosedur(...) |
Perintah EXEC
nama_prosedur ... |
|
Pembulatan
Desimal |
Fungsi
ROUND(nilai, desimal) |
Fungsi
CAST(nilai AS DECIMAL(p, s)) |
IV. STRUKTUR DATABASE YANG DIGUNAKAN
Untuk menjaga kerapian dokumen saat disalin ke Microsoft
Word, berikut adalah visualisasi hubungan skema relasi dan struktur integritas
data pada Database AKADEMIK:
1. Tabel Master Strata & Kualifikasi
- JENJANG
- idjenjang
(Primary Key)
- nmjenjang
(Nama strata pendidikan formal, misal: D3 s.d. S3)
- PENDIDIKAN
- idpendidikan
(Primary Key)
- nmpendidikan
(Kualifikasi tingkat akademik dosen pengajar)
- STATUS_AKADEMIK
- idstatusaka
(Primary Key)
- nmstatusaka
(Master status keaktifan akademik mahasiswa)
2. Tabel Program Studi
- PRODI
- idprodi
(Primary Key)
- nmprodi
(Nama program studi)
- idjenjang
(Foreign Key mencakup tabel JENJANG) -> Relasi 1-to-Many
3. Tabel Fakta Utama (Entitas)
- MAHASISWA
- npm
(Primary Key)
- nama,
tempat_lhr, tgl_lhr
- idprodi
(Foreign Key mencakup tabel PRODI)
- idstatusaka
(Foreign Key mencakup tabel STATUS_AKADEMIK)
- thn_masuk,
ipk
- DOSEN
- nmdosen
(Primary Key)
- gelar,
tempat_lahir, tgl_lahir
- idprodi
(Foreign Key mencakup tabel PRODI)
- idpendidikan
(Foreign Key mencakup tabel PENDIDIKAN)
V. KESIMPULAN
Berdasarkan analisis teoretis dan eksplorasi konseptual yang
dilakukan sepanjang praktikum Basis Data Modul 10 ini, diperoleh kesimpulan
sebagai berikut:
- Stored
Procedure tingkat lanjut menyediakan fleksibilitas pemrograman prosedural
langsung di sisi database engine, memindahkan beban pemrosesan
logika bisnis dari tingkat aplikasi ke tingkat server basis data secara
optimal.
- Penggunaan
multi-parameter input (IN) yang dipadukan dengan operator logika
kondisional kompleks terbukti menghasilkan penyaringan data bersyarat
ganda yang sangat efisien dan aman.
- Integrasi
operasi penggabungan tabel (INNER JOIN) di dalam Stored Procedure
menyediakan lapisan abstraksi yang luar biasa, menyederhanakan interaksi
client-server, dan meminimalkan kesalahan penulisan kueri JOIN yang
berulang-ulang di sisi client.
- Pemakaian
fungsi agregasi yang berkolaborasi dengan klausa GROUP BY dan HAVING
menyediakan fasilitas komputasi statistik kelompok yang dinamis,
mempermudah pembuatan rangkuman data laporan akademis berpresisi tinggi.
- Blok
percabangan kondisional (IF-ELSEIF-ELSE) memungkinkan pembentukan kueri
berperilaku dinamis yang cerdas, di mana server database dapat menentukan
eksekusi instruksi yang berbeda tergantung pada nilai parameter kontrol
yang dikirim.
- Parameter
keluaran (OUT / OUTPUT) terbukti menjadi mekanisme transfer data skalar
yang andal dan hemat memori, karena mampu mengirimkan hasil komputasi
database tanpa harus mengembalikan hasil kueri tabel yang besar.
- Pembungkusan
operasi DML (INSERT, UPDATE, DELETE) di dalam Stored Procedure menyediakan
pertahanan keamanan basis data lapis pertama yang kuat melalui
enkapsulasi, pencegahan SQL Injection, serta penerapan prinsip hak
akses minimum (Least Privilege).
- Studi
perbandingan dialek sintaksis antara MySQL/SQLite dan native T-SQL (MS SQL
Server) berhasil mempertajam pemahaman teoretis mengenai standardisasi
kueri SQL serta perbedaan taktis penulisan variabel, parameter output,
penugasan nilai, dan blok logika eksekusi pada berbagai vendor RDBMS di
industri.
VI. REFERENSI
- Microsoft
SQL Server Documentation - CREATE PROCEDURE (Transact-SQL). https://learn.microsoft.com/en-us/sql/t-sql/statements/create-procedure-transact-sql
- Microsoft
SQL Server Documentation - Control-Of-Flow Language (Transact-SQL). https://learn.microsoft.com/en-us/sql/t-sql/language-elements/control-of-flow
- MySQL
Reference Manual - Stored Routines and Control Statements. https://dev.mysql.com/doc/refman/8.0/en/stored-routines.html
- Modul
Praktikum Basis Data / DBMS - Modul 10: Stored Procedure II.
Politeknik Negeri Lampung (POLINELA).
- Berkas
Pendukung Praktikum M10:
- jawaban.txt
: Solusi Stored Procedure dialek MySQL (22 Prosedur)
- jawaban_ssms.txt
: Solusi Stored Procedure dialek T-SQL native SSMS (22 Prosedur)
- promt.txt
: Petunjuk penyelesaian tugas akademik mandiri Varian 28
Komentar
Posting Komentar