Anda di halaman 1dari 23

LAPORAN 06 SISTEM BASIS DATA

“PROCEDURE PADA MYSQL”

Farhan

2211082008

Trpl 1A

JURUSAN TEKNOLOGI INFORMASI

PROGRAM STUDI D4 TEKNOLOGI REKAYASA PERANGKAT LUNAK

POLITEKNIK NEGERI PADANG

2023
A. Landasan Teori
Didalam database terdapat istilah penting yang bernama stored
procedure. Stored procedure ini merupakan suatu blok program yang dapat
dipanggil secara berulang-ulang dalam bentuk script. Dengan
menggunakan stored procedure maka seluruh aplikasi akan terdistribusi
dan ketika mengeksekusi satu perintah CALL aplikasi dapat langsung
membentuk sejumlah task yang dapat berjalan di dalam server. Lebih
jelasnya, stored procedure ini akan mempersingkat pemrograman
karena programmer hanya perlu memanggil stored procedure dengan
parameternya tanpa perlu mengetikkan syntax SQL yang panjang. Stored
procedure didalam Oracle menawarkan beberapa keuntungan di
bidang development, integrity, security, performance, dan memory allocation.

Berikut keuntungan yang diberikan oleh stored procedure pada


Oracle Database:

 Performance:

Stored procedure dikompilasi sebanyak satu kali dan disimpan dalam bentuk
yang dapat dieksekusi sehingga pemanggilan procedure akan menjadi cepat
dan efisien.

 Productivity and Ease of Use

Produktivitas dapat ditingkatkan dengan mengurangi pengkodean yang


terlalu banyak. Selain itu, stored procedure juga dapat memperluas
fungsionalitas

 Scalability
Stored procedure meningkatkan skalabilitas dengan mengisolasi pemrosesan
aplikasi di Selain itu, automatic dependency tracking membantu dalam
mengembangkan scalable application

 Maintainability

Setelah stored procedure divalidasi dapat digunakan secara berulang


kali di sejumlah aplikasi. Apabila definisinya berubah, maka yang
terpengaruh hanya procedure nya saja bukan aplikasi yang
memanggilnya. Dengan begitu, maka maintenance akan lebih mudah
dilakukan karena terjadi di server daripada harus maintenance salinan di
komputer klien yang berbeda.

 Interoperability

Oracle Database memungkinkan interoperabilitas yang tinggi antara Java


dan PL/SQL. Aplikasi Java dapat memanggil PL/SQL store
procedure menggunakan JDBC Sebaliknya, PL/SQL store dapat memanggil
Java stored procedure secara langsung.

 Replication
Dengan menggunakan Oracle Advanced Replication, stored procedure dapat
direplikasi dari satu instance Oracle Database ke yang lain.

Security disini meliputi beberapa arena diantaranya:

1. Keamanan jaringan untuk koneksi.


2. Akses dan kontrol eksekusi sumber daya sistem
informasi atau JVM dan user-defined classes.
3. Verifikasi bytecode dari file JAR yang diimpor dari
sumber eksternal.

Parameter yang digunsksn dalam stored procedure terdiri dari 3 jenis yaitu :
- Paremeter IN. Parameter jenis ini digunakan hanya untuk input. Jika
parameter ini diubah nilainya di dalam stored procedure, maka tidak akan
mempengaruhi nilai variablenya setelah stored procedure dieksekusi.
Parmeter ini boleh dari variable atau nilai langsung.
- Parameter OUT. Parameter jenis ini digunakan mengeluarkan hasil proses
dalam stored procedure agar bisa diterima di luar procedure. Paramter ini
hanya boleh menggunakan variable.
- Parameter INOUT. Gabungan dari IN dan OUT. Dapat mengirim dan
menerima nilai variable. Paremeter ini hanya boleh menggunakan variable
- SELECT INTO digunakan untuk mengambil data dari sebuah query, dan
menyimpan hasil querynya ke suatu variable.

B. Langkah Kerja Selama Praktek


Stored Procedure dan Stored Function
Adalah Memberikan fitur untuk menulis kode program menggunakan bahasa
SQL.
Perbedaan procedure dan function :
1. Procedure → Tidak harus mengembalikan nilai
Function → harus mengembalikan nilai
2. Procedure → CALL
Function → SELECT / WHERE
3. Procedure → INPUT/OUTPUT parameter
Function → INPUT parameter
Kelebihan penggunaan stored procedure dan stored function :
1. Membuat programming di SQL menjadi lebih efisien.
2. Mengurangi beban kerja web server
3. Akan lebih berguna ketika dikombinasikan dengan trigger Kekurangan :
1. Rumit
2. Terbatas
3. Butuh resource besar
Variable pada MySQL
Variable adalah tempat penyimpanan nilai sementara.
SET @nama = ''udin” Tampilkan
Variabel :
SELECT @nama;

variabel juga dapat menyimpan jumlah data dalam suatu data Contoh
:
select count(*) INTO @jml_data from products;

STORED PROCEDURE
Format :
DELIMITER //
CREATE PROCEDURE nama_procedure(parameter1, parameter2,...)
BEGIN
.....
.....
.....
END
DELIMITER

Untuk menjalankan procedure :


CALL nama_procedure (argumen1, argument2,....);
DELIMITER :
Adalah perintah untuk mengubah tanda akhir dari Query. ##, //, dll
Contoh :
1. Buat procedure dengan salam dengan isi Selamat Pagi Jurusan TI Query
:
DELIMITER //
DROP PROCEDURE IF EXIST salam
CREATE PROCEDURE salam()
BEGIN
SELECT 'Selamat Pagi Jurusan TI';
END //
DELIMITER ; pemanggilannya
:
CALL salam();

Cara melihat procedure :


SHOW PROCEDURE STATUS WHERE db = 'namadatabase' \G;
SHOW PROCEDURE STATUS WHERE db = 'classicmodels' \G;

Lihat isi pembuatan Procedure :


SHOW CREATE PROCEDURE salam \G;

Procedure dengan Variabel :


Contoh Query :
DROP PROCEDURE IF EXISTS salam;
DELIMITER //
CREATE PROCEDURE salam()
BEGIN
DECLARE sapa varchar(30) DEFAULT 'Selamat Pagi Jurusan TI';
SET sapa = 'Selamat Pagi Prodi TRPL';
SELECT sapa; END
//
DELIMITER ;
CALL salam();

Stored Procedure Parameter


Parameter
Adalah sebutan untuk nilai input kedalam sebuah procedure. Sebuah procedure
bisa memiliki beberapa parameter atau tidak sama sekali.
FORMAT :
CREATE OR REPLACE PROCEDURE
nama_procedure(parameter1, parameter2)
BEGIN
.....
.....
END//
Cara menuliskan parameter :
[IN|OUT|INOUT] nama_parameter tipe_parameter(ukuran)
Contoh : IN nama varchar(30), OUT hasil_jumlah INT, INOUT hasil INT
3 Mode parameter :
IN → Parameter default. Fungsinya untuk menampung nilai masukan (input)
OUT → Fungsinya untuk menampung nilai output. Bisa dipanggil di luar
procedure
INOUT → Fungsinya untuk menampung nilai output dan input Contoh
:
1. Dengan parameter IN Query :
DELIMITER //
CREATE OR REPLACE PROCEDURE salam_in (IN nama
VARCHAR(30))
BEGIN
DECLARE salam VARCHAR(50);
SET salam = CONCAT('Selamat Pagi ', nama);
SELECT salam;
END //
DELIMITER ;
CALL salam_in('abdul');
2. Dengan parameter IN dan OUT
Query :
delimiter //
CREATE OR REPLACE PROCEDURE salam_inout (IN nama
VARCHAR(30), OUT hasil varchar(50))
BEGIN
SELECT CONCAT('Selamat Pagi ', nama) INTO hasil;
END //
DELIMITER ;
CALL salam_inout('bukittinggi', @hasil_salam);
SELECT @hasil_salam;
3. Dengan parameter INOUT Query
:
DELIMITER //
CREATE OR REPLACE PROCEDURE bali_makan(INOUT hasil INT)
BEGIN
SET hasil = hasil + 1;
END //
DELIMITER ;
SET @angka = 2;
CALL bali_makan(@angka);
SELECT @angka;
C. Analisis
Stored procedure pada MySQL adalah sebuah subrutin yang terdiri dari
kumpulan perintah SQL yang disimpan di dalam database server dan dapat
dipanggil oleh aplikasi atau perintah SQL lainnya. Stored procedure pada
MySQL memiliki tujuan yang sama dengan prosedur pada bahasa
pemrograman, yaitu mempermudah dalam operasi pengelolaan suatu aksi
yang diinginkan . Keuntungan dari penggunaan stored procedure pada
MySQL antara lain dapat mengurangi trafik network dan overhead,
membatasi akses langsung ke tabel dari database, dan meningkatkan
keamanan. Untuk membuat stored procedure pada MySQL, dapat dilakukan
dengan menggunakan perintah CREATE PROCEDURE, diikuti dengan nama
stored procedure dan parameter input/output yang dibutuhkan

D. Contoh Soal
1) Buatlah procedure untuk menampilkan productname yang dibeli oleh

customer dengan customername Mini Caravy


Query :

DELIMITER $$

CREATE OR REPLACE PROCEDURE mini_caravy()

BEGIN

SELECT productname, customername

FROM customers JOIN orders USING (customernumber)

JOIN orderdetails USING(ordernumber)

JOIN products USING(productcode)

WHERE customername = 'Mini Caravy';

END $$

DELIMITER ;

CALL mini_caravy();

2) Buatlah procedure yang berfungsi untuk menampilkan jumlah employee


yang ada di setiap offices. Tampilkan hanya untuk offices yang memiliki
employee lebih dari 3 orang. Jumlah employee akan disimpan kedalam

variabel tertentu

Query :

DELIMITER $$

CREATE OR REPLACE PROCEDURE jml_emp()

BEGIN

DECLARE jml_emp INT;

SET jml_emp = 3;

SELECT officeCode, COUNT(*) AS jumlah_employee

FROM employees

GROUP BY officeCode

HAVING COUNT(*) > jml_emp;

END $$

DELIMITER ;

CALL jml_emp();
3) Buatlah procedure untuk melakukan pengecekan terhadap buyprice product
dengan productname The Titanic.Keterangan dimuat dalam sebuah variable
Jika buyprice paling banyak 30 maka keterangannya 'Product Murah'
buyprice diatas 30 hingga 60 maka keterangannya 'Product Biasa' buyprice
diatas 60 keterangannya 'Product Mahal'

Query 1 :

DELIMITER $$

CREATE OR REPLACE PROCEDURE keterangan_buyprice()

BEGIN

DECLARE keterangan varchar (30);

SELECT CASE

WHEN buyprice <=30 THEN 'Product Murah'

WHEN buyprice <= 60 THEN 'Product Biasa'

ELSE 'Product Mahal'

END AS keterangan2

INTO keterangan

FROM products

WHERE productname = 'The Titanic';

SELECT keterangan;

END $$

DELIMITER ;

CALL keterangan_buyprice();
Query 2 :

DELIMITER $$

CREATE OR REPLACE PROCEDURE belititanic()

BEGIN

DECLARE keterangan VARCHAR(30);

DECLARE hargabeli INT;


SELECT buyprice INTO hargabeli FROM products WHERE

productname ='The Titanic';

IF hargabeli <=30 THEN SET keterangan = 'Product Murah';

ELSEIF hargabeli <=60 THEN SET keterangan = 'Product Biasa';

ELSE SET keterangan = 'Product Mahal';

END IF;

SELECT keterangan;

END$$

DELIMITER ;

CALL belititanic();
4) Buatlah procedure yang digunakan untuk menambahkan data offices dengan

parameter kota dan kode_kantor.

Query :

DELIMITER //

CREATE OR REPLACE PROCEDURE tambah_data_office (

IN p_kota VARCHAR(50),

IN p_kode_kantor VARCHAR(10))

BEGIN

INSERT INTO classicmodels.offices (city, officeCode)

VALUES (p_kota, p_kode_kantor);

END //

DELIMITER ;

CALL classicmodels.tambah_data_office('Jakarta', '8');


5) Buatlah procedure level_customers dengan parameter input
customernumber dan parameter output adalah customer_level, dengan
ketentuan jika
kreditlimit diatas 50000 maka level customer adalah platinum, selain itu non

platinum. Saat pemanggilan lakukan pengecekan untuk customer dengan


kode 103.

Query :

DELIMITER $$

CREATE OR REPLACE PROCEDURE level_customer(

IN customernumber INT,
OUT customer_level VARCHAR(30))

BEGIN

DECLARE max_kreditlimit DECIMAL(10, 2);

SET max_kreditlimit = 50000;

SELECT

CASE

WHEN creditLimit > max_kreditlimit THEN 'Platinum'

ELSE 'Non Platinum'

END AS keterangan

INTO customer_level

FROM customers

WHERE customerNumber = customernumber

LIMIT 1;

END $$

DELIMITER ;

CALL level_customer(103, @customer_level);

SELECT @customer_level AS customer_level;


6) Buatlah procedure customers_show untuk menampilkan nama lengkap

customer, alamat, nomor telepon, city dan state.

Query :

DELIMITER $$

CREATE OR REPLACE PROCEDURE customers_show()

BEGIN
SELECT CONCAT(contactFirstName, ' ', contactLastName) AS
FullName, addressLine1 AS alamat, phone AS nomor_telepon, city,

state

FROM classicmodels.customers;

END $$

DELIMITER ;

CALL customers_show();
7) Buatlah procedure product_count untuk menampilkan banyaknya product
berdasarkan jenisnya(product_line) dari table products. Tampilkan hanya
untuk product yang jumlahnya diatas 10. Jumlah product diatur dalam
sebuah variabel.

Query :

DELIMITER $$

CREATE OR REPLACE PROCEDURE product_count()

BEGIN

SELECT productLine, COUNT(*) AS product_count

FROM classicmodels.products

GROUP BY productLine

HAVING COUNT(*) > 10;

END $$

DELIMITER ;

CALL product_count();
E.Kesimpulan Dalam praktikum modul 7 Store procedur dapat disimpulkan
bahwa :

 Stored procedure adalah sebuah prosedur layaknya subprogram (subrutin)


di dalambahasa pemrograman reguler yang tersimpan di dalam katalog
basis data.

 Stored procedure memiliki beberapa kelebihan yang ditawarkan, antara


lainmeningkatkan performa, mereduksi trafik jaringan,
reusabl dan meningkatkan kontrolsekuriti.

 Stored procedure juga memiliki kekurangan, di antaranya berpotensi


meningkatkanbeban server dan penulisannya tidak mudah (memerlukan
pengetahuan spesifik).

 Stored procedure memiliki 3 parameter, antara lain: IN, OUT, dan INOUT

 Parameter IN merupakan mode default ini mengindikasikan bahwa sebuah


parameterdapat dipass
ke stored procedure tetapi nilainya tidak dapat diubah (dari dalam
storedprocedure).

 Parameter OUT. Mode ini mengindikasikan bahwa stored procedure dapat


mengubahparameter dan mengirimkan kembali ke program pemanggil.
 Parameter INOUT. Mode ini pada dasarnya merupakan kombinasi dari
mode IN danOUT

E. Referensi
Ctt waktu praktek
https://sis.binus.ac.id/2020/10/28/kegunaan-stored-procedure-pada-oracle-
database/
https://www.geriatama.com/2021/11/mysql-membuat-stored-
procedurepart5.html#:~:text=Jadi%2C%20Apa%20yang%20dimaksud
%20stored,%2C%
20update%2C%20dan%20delete.

https://elib.unikom.ac.id/files/disk1/370/jbptunikompp-gdl-andriherya-18491-
12-pertemua-e.pdf
http://rafieaza.blogspot.co.id/2011/09/stored-procedures-functions-dan-
trigger.html,

Anda mungkin juga menyukai