You are on page 1of 15

LAPORAN RESMI

MODUL V
“TYPE DATA/ STORED PROCEDURE”
SISTEM MANAJEMEN BASIS DATA

NAMA : ABDUL WAKHID


N.R.P : 210441100106
DOSEN : YUDHA DWI PUTRA NEGARA S.Kom.,M.Kom
ASISTEN : AGISTIA DEVI WARDANI
TGL PRAKTIKUM : 31 APRIL 2023

Disetujui : 05 APRIL 2023


Asisten

AGISTIA DEVI WARDANI


200441100145

LABORATORIUM BISNIS INTELIJEN SISTEM


PRODI SISTEM INFORMASI
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
BAB I
PENDAHULUAN

1.1 Latar Belakang


Dalam DBMS terdapat Stored procedure. Stored procedure adalah sebuah
program yang tersimpan di dalam database dan dapat dieksekusi berulang-ulang
tanpa perlu menulis ulang kode program. Stored Procedure memungkinkan
pengguna untuk mengakses data dalam database dan menjalankan operasi
tertentu dengan lebih efisien dan terstruktur.

Dalam Implementasinya, penggunaan stored procedure sering melibatkan


parameter. Di MySQL, parameter stored procedure dibedakan menjadi tiga
mode : IN, OUT, dan  INOUT. Stored Procedure dirancang untuk dijalankan di
dalam database, sehingga operasi yang dilakukan oleh Stored Procedure dapat
dieksekusi lebih cepat dan efisien. Stored Procedure juga dapat meminimalkan
jumlah data yang ditransfer antara database dan aplikasi, sehingga dapat
menghemat waktu dan meningkatkan kinerja sistem secara keseluruhan.

Stored procedure memiliki beberapa kegunaan dalam database antara lain


Stored Procedure memungkinkan pengguna untuk melakukan pemeliharaan dan
perbaikan pada kode program dengan mudah. Jika ada kesalahan atau bug pada
kode program, pengguna dapat memperbaikinya di dalam Stored Procedure dan
menyimpan perubahan tersebut di dalam database. karena intruksi ini sudah
terdefinisi dengan jelas di dalam stored procedure. Dengan manfaat dan
keuntungan yang diberikan, Stored Procedure menjadi salah satu elemen penting
dalam pengelolaan database dan pemrosesan data.

1.2 Tujuan
- Memahami dan membuat Stored Procedure pada basisdata
- Mampu Menggunakan type data sesuai kebutuhan pada Stored Procedure
BAB II
DASAR TEORI

2
2.1 Tipe Data
Tipe data merupakan bagian dari variabel yang mempengaruhi perilaku
variabel. Dengan tipe data ini, bisa ditentukan nilai apa yang bisa disimpan
didalam variabel tersebut. Dan satu variabel hanya bisa diberi satu tipe data. Ada
lima jenis tipe data sesuai dengan SQL - ANSI 1993 yaitu character string,
numeric, temporal, binary, dan boolean.
a) Character String
Atribut seperti nama dan alamat direpresentasikan oleh character
string. Ada 2 macam tipe data untuk merepresentasikan character string,
yaitu:
 CHARACTER(<panjang>)
CHAR(<panjang>) menspesifikasikan karakter dengan panjang yang
tetap. Sisa karakter yang tidak terpakai umumnya digantikan oleh
padding characters (spasi).
 CHARACTER VARYING(<panjang>)
Atau VARCHAR(<panjang>) menspesifikasikan karakter dengan
panjang yang fleksibel dan maksimum sesuai dengan <panjang>.

Sintak :
Type Data [(M)]
Misal :
CHAR [(M)]
VARCHAR [(M)]

CREATE TABLE contoh_cha (cha CHAR(5), varcha VARCHAR(5));


INSERT INTO contoh_cha values ('a ','a ');
INSERT INTO contoh_cha values ('dunia','dunia');
INSERT INTO contoh_cha VALUES ('basisdata','basisdata');
b) Numeric
Data-data seperti usia dan gaji disimpan dalam bentuk angka.
Penyimpanan dalam bentuk angka menggunakan tipe data numeric. Ada
empat macam tipe data numeric, yaitu:
• INT, BIGINT, SMALLINT. SMALLINT mempunyai range ±2^15.
INT mempunyai range ±2^31. BIGINT mempunyai range ±2^63.
• NUMERIC(<panjang>, [<presisi>]),
DECIMAL(<panjang>, [<presisi>])
Mempunyai panjang karakter dan presisi (angka belakang koma)
dengan range ±10^38. Sebagai contoh: NUMERIC (5,2) mempunyai
panjang karakter 5 dengan tingkat presisi 2. Jadi nilai 100,52 bisa
disimpan tetapi tidak untuk 1000,1. Nilai 0,00001 disimpan menjadi
0,00.
• REAL. Tingkat presisi tinggi dengan range -3,40E+38 s.d -1,18E-
38 dan +1,18E-38 s.d +3,40E+38.
• FLOAT. Tingkat presisi tinggi dengan range -1,79E+308 s.d -2,23E-
308; 0; +2,23E+308 s.d +1,79E+308.

Sintak :
Type Data [(M[,D])] [UNSIGNED] [ZEROFILL]

Misal :
INT/DECIMAL/FLOAT/DOUBLE[(M)] [UNSIGNED] [ZEROFILL]
Keterangan :
• M : menunjukkan lebar karakter maksimum, jumlah digit
keseluruhan
• D : Jumlah digit dibelakang koma
• tanda [ dan ] berarti pemakaiannya adalah optional Contoh :

CREATE TABLE contoh_int (mini TINYINT, kecil

SMALLINT UNSIGNED,sedang MEDIUMINT(4) ZEROFILL,

biasa INT(4) UNSIGNED,besar BIGINT(6) UNSIGNED

ZEROFILL);

c) Temporal
Temporal merupakan tipe data yang menyimpan tanggal dan
waktu yang disesuikan dengan system-timezone (komputer). Sebagai
contoh data temporal adalah data tentang tanggal lahir. Ada dua macam
tipe data temporal, yaitu:
• DATETIME. Tipe data ini menyimpan informasi tanggal, waktu
atau bahkan keduanya. Dalam SQL Server, tipe data ini
menyimpan dengan tingkat akurasi sampai 3,33 milidetik.
Sedangkan untuk SMALLDATETIME hanya sampai 1 menit.
Dalam tipe data ini, juga terdapat tipe data TIMESTAMP dengan
tingkat akurasi sampai dengan 9 digit.
• INTERVAL. Umumnya digunakan untuk menyimpan periode seperti
garansi. Ada 2 macam yaitu (1) YEAR-MONTH dan (2) DAY-
TIME. SQL Server tidak mempunyai tipe data ini.
Sintak : type data;
Contohnya :

CREATE TABLE contoh_date (dat DATE, tim TIME, dattim


DATETIME,timestam TIMESTAMP, yea YEAR);

Atau

SELECT NOW(), CURDATE(), CURTIME();

2.2 Sintaks Stored Procedure :

<create procedure statement> ::=


CREATE PROCEDURE <procedure name> ( [ <parameter
list> ] )
<routine body>
<parameter list> ::=
<parameter specification> [ , <parameter
specification> ]...
<parameter specification> ::=
[ IN | OUT | INOUT ] <parameter> <data type>
<routine body> ::= <begin-end block>
<begin-end block> ::=
[ <label> : ] BEGIN <statement list> END [ <label> ]
<statement list> ::= { <body statement> ; }...
<statement in body> ::=

<declarative statement> | <procedural statement>

Aktivasi/pemanggilan Stored Procedure:


<call statement> ::=
CALL [ <database name> . ] <stored procedure name>
( [ <scalar expression> [ , <scalar expression> ]... ] )

Menghapus Stored Procedure:


<drop procedure statement> ::=
DROP PROCEDURE [ IF EXISTS ]
[ <database name> . ] <procedure name>

Pernyataan pembuatan stored procedure :


DELIMITER $$
CREATE PROCEDURE set_counter(INOUT count INT(4),IN inc
INT(4)) BEGIN
SET count = count + inc;
END$$
DELIMITER ;

Cara memanggilnya dengan mengset isi awal :


SET @counter = 1;
CALL set_counter(@counter,1); -- 2
CALL set_counter(@counter,2); -- 3
CALL set_counter(@counter,9); -- 12
SELECT @counter; -- 12
BAB IV
IMPLEMENTASI

3
4
4.1 Soal
1. Buatkanlah procedure untuk menghitung sudah berapa lama atau hari
salah satu konsumen tersebut melakukan transaksi terakhir jika
diambilkan dari tanggal terakhir konsumen melakukan transaksi.
2. Buatkanlah procedure untuk membuat perubahan data pada data tabel
master.
3. Buatkanlah procedure untuk mengetahui berapa jumlah barang/jasa yang
dibeli oleh pelanggan/konsumen tertentu.
4. Buatkanlah procedure dengan menambahkan data tanggal saat ini pada
salah satu table dengan menggunakan fungsi bawaan MySQL yang dapat
mengambil tanggal saat ini.
5. Buatkanlah procedure untuk menampilkan data berdasarkan tanggal 1-5

4.2 Jawaban
1.
o Query
DELIMITER //
CREATE PROCEDURE getMhsByAlamat( IN alamatt
VARCHAR(20))
BEGIN
SELECT * FROM mahasiswa WHERE alamat = alamatt;
END //
DELIMITER ;
CALL getMhsByAlamat("Surabaya");

o Hasil
o Penjelasan

Query tersebut merupakan contoh untuk membuat stored procedure


pada yang bernama "getMhsByAlamat". Stored procedure ini memiliki
satu parameter input yaitu "alamatt" yang bertipe data varchar. Stored
procedure ini akan mengembalikan data mahasiswa yang memiliki
alamat yang sama dengan nilai parameter "alamatt". Perintah "CALL
getMhsByAlamat("Surabaya");" akan memanggil stored procedure ini
dengan nilai parameter "Surabaya" sebagai input.

2.
o Query
DELIMITER //
CREATE PROCEDURE getMhsTigaField(
IN nama VARCHAR(20),
IN prodi VARCHAR(20),
IN alamatt VARCHAR(20)
)
BEGIN
SELECT * FROM mahasiswa m INNER JOIN prodi p ON
p.id_prodi = m.id_prodi WHERE
nama_mahasiswa = nama AND
alamat = alamat AND
nama_prodi = prodi;
END //
DELIMITER;
CALL getMhsTigaField("Ahmad", "Teknik Informatika",
"Bangkalan");
o Hasil

o Penjelasan

Query tersebut adalah stored procedure yang bernama


"getMhsTigaField". Dalam stored procedure ini memiliki tiga
parameter input yaitu "nama", "prodi", dan "alamatt" yang bertipe
varchar. Stored procedure ini akan mereturn data mahasiswa dengan
ketiga field yang sesuai dengan nilai parameter yang diinputkan. Data
ini diambil dari tabel mahasiswa (m) dan tabel prodi (p) dengan
menggunakan inner join berdasarkan kolom "id_prodi". Kemudian
perintah "CALL getMhsTigaField("Ahmad", "Teknik Informatika",
"Bangkalan");" akan memanggil stored procedure ini dengan nilai
parameter "Ahmad" untuk kolom "nama_mahasiswa", "Teknik
Informatika" untuk kolom "nama_prodi", dan "Bangkalan" untuk kolom
"alamat".

3.
o Query
DELIMITER //
CREATE PROCEDURE insertDosen(
IN id_dosen VARCHAR(20),
IN nama_dosen VARCHAR(50),
IN jenis_kelamin ENUM('Laki-laki', 'Perempuan'),
IN tanggal_lahir DATE,
IN alamat VARCHAR(100),
IN email VARCHAR(50),
IN no_telepon VARCHAR(15)
)
BEGIN
INSERT INTO dosen (id_dosen, nama_dosen, jenis_kelamin,
tanggal_lahir, alamat, email, no_telepon)
VALUES (id_dosen, nama_dosen, jenis_kelamin, tanggal_lahir,
alamat, email, no_telepon);
END //
DELIMITER;

CALL insertDosen("DSN011", "Azrel", "Perempuan", "2002-02-20",


"Darjo", "azrel@gmail.com", "0856459784564");
SELECT * FROM dosen;

o Hasil

o Penjelasan
Query tersebut digunakan untuk membuat stored procedure pada
yang bernama insertDosen. Stored procedure ini memiliki tujuh
parameter input yang masing-masing adalah id_dosen, nama_dosen,
jenis_kelamin, tanggal_lahir, alamat, email, dan no_telepon". Stored
procedure ini akan memasukkan data dosen baru ke dalam tabel dosen
dengan menggunakan perintah insert into. Data ini diambil dari nilai
parameter yang diinputkan. Contoh perintah untuk memanggil stored
procedure ini yaitu:
CALL insertDosen(“DSN123”, “Dr. Azrel”, “Laki-laki”, “1980-01-01”,
“Surabaya”, “azrel@dosen.com”, “08123456789”);

4.
o Query
DELIMITER //
CREATE PROCEDURE getMhsOut(
OUT nama VARCHAR(20),
OUT prodi VARCHAR(20),
OUT alamatt VARCHAR(20)
)
BEGIN
SELECT m.nama_mahasiswa, p.nama_prodi, m.alamat
INTO nama, prodi, alamatt
FROM mahasiswa m JOIN prodi p ON p.id_prodi = m.id_prodi
WHERE nim = '1234567890';
END//
DELIMITER;
CALL getMhsOut(@nama_mahasiswa, @prodi, @alamat);
SELECT @nama_mahasiswa, @prodi, @alamat;

o Hasil

o Penjelasan
Query tersebut adalah digunakan untuk membuat stored procedure
yang bernama getMhsOut. Stored procedure ini memiliki tiga parameter
output yaitu nama, prodi, dan alamatt yang bertipe data Varchar.
Kemudian Perintah “SELECT m.nama_mahasiswa, p.nama_prodi,
m.alamat INTO nama, prodi, alamatt FROM mahasiswa m JOIN prodi
p ON p.id_prodi = m.id_prodi WHERE nim = '1234567890' ” akan
mengeksekusi query tersebut dan memasukkan hasil query ke dalam
tiga parameter output. Lalu Perintah “CALL
getMhsOut( @nama_mahasiswa, @prodi, @alamat) ;” akan memanggil
stored procedure ini dengan memberikan tiga variabel sebagai
parameter output. Perintah “SELECT @nama_mahasiswa, @prodi,
@alamat;” akan menampilkan nilai tiga variabel tersebut.
5.
o Query
DELIMITER //
CREATE PROCEDURE getMhsInOut(
IN nim VARCHAR(20),
OUT nama VARCHAR(20),
OUT prodi VARCHAR(20),
OUT alamatt VARCHAR(20)
)
BEGIN
SELECT m.nama_mahasiswa, p.nama_prodi, m.alamat
INTO nama, prodi, alamatt
FROM mahasiswa m JOIN prodi p ON p.id_prodi = m.id_prodi
WHERE m.nim = nim;
END//
DELIMITER;
CALL getMhsInOut('1234567891', @nama_mahasiswa, @prodi,
@alamat);
SELECT @nama_mahasiswa, @prodi, @alamat;

o Hasil

o Penjelasan
Code diatas adalah contoh kode SQL untuk membuat stored
procedure bernama "getMhsInOut" yang mengambil NIM mahasiswa
sebagai input, dan mengembalikan tiga variabel output: nama, program
studi, dan alamat. Isi dari stored procedure adalah query SELECT yang
bergabung antara tabel mahasiswa dan tabel program studi berdasarkan
id_prodi, dengan kondisi WHERE pada NIM mahasiswa yang diambil
dari parameter input. Setelah membuat stored procedure, kode
kemudian memanggil stored procedure dengan memasukkan NIM
mahasiswa tertentu dan variabel untuk masing-masing output. Terakhir,
kode SQL menampilkan nilai variabel output dengan menggunakan
perintah SELECT.
BAB V
PENUTUP

5
5.1 Analisa
Pada praktikum ini,praktikan mengalisa bahwa dengan memakai Stored
Procedure memungkinkan pengguna bisa untuk menulis kode program yang lebih
terstruktur dan terorganisir. Kode program Stored Procedure dapat disimpan di
dalam database dan dipanggil kembali berulang-ulang, sehingga pengguna dapat
menghindari menulis kode program yang sama berulang-ulang. Penggunaan
Stored Procedure pada database memiliki manfaat yang signifikan, antara lain
meningkatkan efisiensi dan kecepatan operasi, meminimalkan jumlah data yang
ditransfer antara database dan aplikasi, keterstrukturan kode, keamanan data,
kemudahan pemeliharaan, dan portabilitas kode program.

5.2 Kesimpulan
1. Stored Procedure adalah sebuah program yang tersimpan di dalam database
dan dapat dieksekusi berulang-ulang tanpa perlu menulis ulang kode
program. Stored Procedure memungkinkan pengguna untuk mengakses data
dalam database dan menjalankan operasi tertentu dengan lebih efisien dan
terstruktur.
2. Dalam Implementasinya, penggunaan stored procedure sering melibatkan
parameter. Di MySQL, parameter stored procedure dibedakan menjadi tiga
mode : IN, OUT, dan  INOUT
3. kelebihan yang ditawarkan stored procedure antara lain: mengingkatakan
performa, mereduksi trafik jaringan, reusable, dan meningkatkan kontrol
sekuriti.

You might also like