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

  1. Memahami konsep Stored Procedure tingkat lanjut (Advanced Stored Procedure) khususnya konsep parameterisasi dinamis dan alur kontrol di tingkat server database.
  2. Memahami landasan teoritis penggunaan multi-parameter input (IN) untuk penyaringan data multikondisional yang presisi.
  3. Memahami integrasi operasi penggabungan tabel (INNER JOIN) relasional di dalam tubuh Stored Procedure untuk mempermudah penyajian data terdistribusi.
  4. Memahami penerapan fungsi agregasi SQL yang dikombinasikan dengan pengelompokan data (GROUP BY) serta klausa penyaringan agregat (HAVING).
  5. Memahami penggunaan struktur kontrol alur percabangan (Control Flow) keputusan bertingkat (IF - ELSEIF - ELSE) untuk memproses logika kondisional dinamis.
  6. Memahami pemanfaatan parameter keluaran (OUT / OUTPUT) untuk mengembalikan nilai skalar dari tubuh prosedur kembali ke program pemanggil.
  7. Memahami enkapsulasi operasi Data Manipulation Language (DML) seperti INSERT, UPDATE, dan DELETE dalam Stored Procedure untuk menjamin integritas data.
  8. 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:

  1. Operator AND: Mengharuskan seluruh kondisi penyaringan terpenuhi secara bersamaan (konjungsi logis).
  2. 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:

  1. 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.
  2. 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:

  1. Fungsi Agregasi: COUNT (menghitung baris), AVG (menghitung rata-rata), SUM (menjumlahkan nilai), MIN (mencari nilai terkecil), dan MAX (mencari nilai terbesar).
  2. GROUP BY: Mengelompokkan baris data yang memiliki kecocokan nilai pada satu atau beberapa kolom tertentu ke dalam satu baris ringkasan (summary row).
  3. 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.
  4. 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:

  1. Enkapsulasi & Abstraksi: Logika manipulasi data dibungkus rapi. Client tidak perlu mengetahui tabel fisik mana saja yang terpengaruh oleh operasi tersebut.
  2. 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.
  3. 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:

  1. 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.
  2. Penggunaan multi-parameter input (IN) yang dipadukan dengan operator logika kondisional kompleks terbukti menghasilkan penyaringan data bersyarat ganda yang sangat efisien dan aman.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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).
  8. 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

  1. Microsoft SQL Server Documentation - CREATE PROCEDURE (Transact-SQL). https://learn.microsoft.com/en-us/sql/t-sql/statements/create-procedure-transact-sql
  2. Microsoft SQL Server Documentation - Control-Of-Flow Language (Transact-SQL). https://learn.microsoft.com/en-us/sql/t-sql/language-elements/control-of-flow
  3. MySQL Reference Manual - Stored Routines and Control Statements. https://dev.mysql.com/doc/refman/8.0/en/stored-routines.html
  4. Modul Praktikum Basis Data / DBMS - Modul 10: Stored Procedure II. Politeknik Negeri Lampung (POLINELA).
  5. 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

Postingan populer dari blog ini

Eksplorasi Lingkungan Kerja DBMS: Microsoft SQL Server Management Studio (SSMS)

Laporan Praktikum Pemrograman SQL II: Implementasi Database AKADEMIK di Microsoft SQL Server

MAKALAH SISTEM BASIS DATA (Perbandingan Tujuan Basis Data: Studi Kasus MySQL, MS-SQL, dan Oracle)