Anda di halaman 1dari 6

TUGAS

Teknologi Basis Data

Oleh :

Adi Fahmi
1605552022

TEKNOLOGI INFORMASI
FAKULTAS TEKNIK
UNIVERSITAS UDAYANA
2017
FLOW CONTROL

Flow Control merupakan bagian dari stored procedure. Terdapat dua macam kontrol alur
(control flow) yang dapat digunakan pada Stored procedure di MySQL, yaitu pengkondisian
(conditional) dan Perulangan (looping).

A. Pengkondisian (Conditional)
Conditional merupakan suatu pengaturan alur program berdasar kondisi Boolean yang
dijadikan patokan.

1. IF
Kontrol alur (control flow) yang didasarkan pada nilai Boolean hasil sebuah ekspresi
yang bernilai true akan menjalankan blok pernyataan yang ada. Dalam kondisi ini
dapat dilakukan dengan menggunakan perintah IF THEN. IF Statement akan
mengevaluasi search_condition dan jika kondisinya TRUE maka akan dijalankan
statement_list setelah THEN.

Syntak untuk IF Statement

IF search_condition THEN statement_list


[ELSE IF search_condition THEN statement_list] ...
[ELSE statement_list ]
END IF

Contoh :

DELIMITER $$
CREATE PROCEDURE `pbd` . `spContohCase` (v_gradechar(1))
BEGIN
Declare v_appraisal varchar(20);
IF v_grade = 'A' THEN set v_appraisal = 'Execellent';
Else if v_grade = 'B' then set v_appraisal = 'Very Good';
Else if v_grade = 'C' then set v_appraisal = 'Good';
Else set v_appraisal = 'No such appraisal';
END IF;
select concat ('Grade',v_grade,' Appraisal ',v_appraisal) as hasil;
END$$
DELIMITER;
call spContohCase('C');

2. Case
Case statement digunakan untuk kondisi yang kompleks. Jika sebuah
search_condition dievaluasi menghasilkan nilai true, maka SQL statement yang sesuai
akan dijalankan. Jika tidak ada kondisi yang sesuai, statement dalam perintah ELSE
akan dijalankan. Setiap statement_list dapat berisi satu atau lebih statement.
Syntak untuk CASE Statement
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
ATAU
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE

Contoh Case :
DELIMITER $$
DROP PROCEDURE IF EXISTS `pbd`.`spContohCase3`$$ CREATE
PROCEDURE `pbd`.`spContohCase3` (in v_grade char(1))
BEGIN
declare v_appraisal varchar(20);
CASE
when v_grade = 'A' THEN set v_appraisal='Execellent';
when v_grade ='B' THEN set v_appraisal='Very Good';
when v_grade ='C' THEN set v_appraisal='Good';
else set v_appraisal='No such appraisal';
END CASE;
select concat('Grade ',v_grade,' Appraisal ',v_appraisal) as hasil;
END$$
DELIMITER ;
call spContohCase3('F')

B. Perulangan (Looping)
Looping adalah perulangan suatu blok procedure berdasarkan kondisi yang ditentukan
sampai tercapai kondisi untuk menghentikannya (terminasi). Setiap perulangan memiliki
empat bagian yaitu : Inisialisasi, proses, iterasi, terminasi
Terdapat tiga standar perulangan dalam Stored Procedure MySQL, yaitu :

1. Repeat
Statement_list dalam REPEAT akan diulang sampai dengan search_condition benar.
Jadi, REPEAT selalu masuk ke dalam loop minimal satu kali. statement_list berisi
satu atau lebih statement.
Syntak untuk REPEAT statement

[begin_label:] REPEAT
statement_list
UNTIL search_condition
END REPEAT [end_label]

Contoh :

DELIMITER $$
DROP PROCEDURE IF EXISTS `pbd`.`spREPEAT`$
CREATE PROCEDURE `pbd`.`spREPEAT` (in p1 int)
BEGIN
SET @x = 0;
REPEAT
SET @x = @x + 1;
UNTIL @x > p1
END REPEAT;
END$$ DELIMITER ;
call spREPEAT(1000);
select @x;

2. While
Statement list dalam WHILE statement akan diulang sampai search_condition is true.
Statement_list dapat berisi satu atau lebih statement.
Syntak untuk WHILE statement

[begin_label:] WHILE
search_condition
DO statement_list
END WHILE [end_label]

Contoh :
DELIMITER $$
DROP PROCEDURE IF EXISTS `pbd`. `spWHILE`$$
CREATE PROCEDURE `pbd`.`spWHILE` ()
BEGIN
DECLARE v1 INT DEFAULT 5;
WHILE v1 > 0 DO
select v1;
SET v1 = v1 - 1;
END WHILE;
END$$
DELIMITER ;
call spWHILE();
CONTOH PROCEDUR IF MENCARI BILANGAN GENAP GANJIL :

DELIMITER &&

CREATE PROCEDURE plsql.bilangan2 (IN nilai INT(30), OUT ket


VARCHAR(20))

BEGIN
IF (nilai MOD 2 = 0) THEN
SET ket= 'genap';
ELSE
SET ket= 'ganjil';
END IF;

END &&

Coding di ats menjelaskan tentang mencari bilangan genap atau ganjil,

IF (nilai MOD 2 = 0) THEN

SET ket= 'genap'; ---- > jika nilai yg di inputkan di bagi 2 dan hasil nya 0, maka cetak
Genap
ELSE
SET ket= 'ganjil';
END IF; --- > jikai nilai yg di inputkan di bagi 2 dan hasil nya tidak 0,
akan di cetak ganjil

CALL bilangan2(8,@ket);
SELECT angka, @ket FROM bilangan

CALL bilangan2(8,@ket); -- > memanggil procedure bilangan2


SELECT angka, @ket FROM bilangan -- > menampilkan data

Anda mungkin juga menyukai