Anda di halaman 1dari 8

lOMoAR cPSD| 36388789

Nama : Adriyan Airul Putra


Npm : 227006516030
Kelas : R.01

A.TUGAS PRAKTIKUM
1. Definisikan stored procedure untuk menangani transfer antar rekening dengan
mengimplementasikan transaksi basis data. Setelah transfer uang berhasil,
tampilkan sisa saldo rekening pengirim!
QUERY :
DELIMITER //
create procedure transfer(
IN rekening_pemilik INT(5),
IN rekening_tujuan INT(5),
IN debit DOUBLE
)
BEGIN
START TRANSACTION;

UPDATE tabungan SET jumlah=jumlah-debit


WHERE no_rek=rekening_pemilik;
UPDATE tabungan SET jumlah=jumlah+debit
WHERE no_rek=rekening_tujuan;

SELECT jumlah AS sisa_saldo,


"TRANSFER BERHASIL" AS status

from tabungan WHERE no_rek=rekening_pemilik;

COMMIT;
END ;
DELIMITER //
lOMoAR cPSD| 36388789

SCREENSHOT :

2. Definisikan stored procedure untuk menangani penarikan tabungan dengan


mengimplementasikan transaksi basis data. Skenarionya adalah penarikan hanya
dapat dilakukan jika:
a. Saldo mencukupi,
b. Menyisakan saldo minimal Rp. 50.000, dan
c. Jumlah (nominal) penarikan minimal Rp. 50.000 dan maksimal Rp. 500.000.
lOMoAR cPSD| 36388789

QUERY :
DELIMITER //
create procedure penarikan(
IN rekening_pemilik INT(5),
IN debit DOUBLE
)
BEGIN
DECLARE saldo INT;

START TRANSACTION;

SELECT jumlah into saldo from tabungan


where no_rek=rekening_pemilik;

IF(50000<=saldo-debit) THEN
IF(debit>=50000 AND debit<=500000)
THEN UPDATE tabungan SET
jumlah=jumlah-debit WHERE
no_rek=rekening_pemilik;

SELECT jumlah AS Saldo


from tabungan where no_rek=rekening_pemilik;
ELSE
select "Nominal penarikan tidak ada"
AS pesan;
END IF;
ELSE
select "Saldo Anda tidak mencukupi"
AS pesan;
END IF;
COMMIT;
END //
DELIMITER ;
lOMoAR cPSD| 36388789

3. Definisikan stored procedure untuk menangani penarikan berulang. Artinya,


penarikan tabungan dengan nominal tertentu yang dispesifikasikan akan dilakukan
sebanyak iterasi yang dispesifikasikan juga. Aturan penarikan tabungan pada soal
nomor 2 masih berlaku di sini. Sebagai ilustrasi, misal Tono memiliki saldo Rp.
300.000, kemudian melakukan penarikan melalui stored procedure berulang
dengan nominal Rp. 100.000 sebanyak 3 kali, maka stored procedure hanya akan
mengcommit penarikan Rp. 200.000 (2 x Rp. 100.000). Sisa Rp. 100.000 tidak
dapat diambil, karena harus menyisakan saldo Rp. 50.000
lOMoAR cPSD| 36388789

QUERY :
DELIMITER //
create procedure tarikulang(
IN rekening_pemilik INT(5),
IN debit DOUBLE,
IN blabla INT
)
BEGIN
DECLARE saldo DOUBLE;
DECLARE flag BOOLEAN;

SET flag=1;

select jumlah into saldo from tabungan


where no_rek=rekening_pemilik;

START TRANSACTION;

WHILE (blabla>0 AND 50000<=saldo-debit)DO


SET flag=0;
COMMIT;
IF(debit>=50000 AND debit<=500000)
THEN UPDATE tabungan SET
jumlah=jumlah-debit WHERE
no_rek=rekening_pemilik;
IF(blabla=1)THEN
select jumlah AS sisa_saldo
from tabungan where no_rek=rekening_pemilik;
END IF;
ELSE
select "Nominal penarikan tidak tersedia!"
AS pesan;
SET blabla=1;
END IF;
SET blabla=blabla-1;
SET saldo=saldo-debit;
END WHILE;
lOMoAR cPSD| 36388789

)
BEGIN
DECLARE saldo DOUBLE;
DECLARE flag BOOLEAN;

SET flag=1;

select jumlah into saldo from tabungan


where no_rek=rekening_pemilik;

START TRANSACTION;

WHILE (blabla>0 AND 50000<=saldo-debit)DO


SET flag=0;
COMMIT;
IF(debit>=50000 AND debit<=500000)
THEN UPDATE tabungan SET
jumlah=jumlah-debit WHERE
no_rek=rekening_pemilik;
IF(blabla=1)THEN
select jumlah AS sisa_saldo
from tabungan where no_rek=rekening_pemilik;
END IF;
ELSE
select "Nominal penarikan tidak tersedia!"
AS pesan;
SET blabla=1;
END IF;
SET blabla=blabla-1;
SET saldo=saldo-debit;
END WHILE;
lOMoAR cPSD| 36388789

IF(flag)THEN
select "Saldo Anda tidak mencukupi!"
AS pesan;
ELSEIF(blabla>0) THEN
select jumlah AS sisa_saldo
from tabungan WHERE no_rek=rekening_pemilik;
END IF;

COMMIT;
END //
DELIMITER ;
SCREENSHOT :
lOMoAR cPSD| 36388789

Anda mungkin juga menyukai