Home Top Ad

Responsive Ads Here

Awal pembahasan dari Mengenal Pemrograman Stored Procedure Pada MySQL lanjut ke pembahasan Struktur Kontrol Program Pada MySQL . ...

Struktur Kontrol Program Pada MySQL



Awal pembahasan dari Mengenal Pemrograman Stored Procedure Pada MySQL lanjut ke pembahasan Struktur Kontrol Program Pada MySQL.

Sebelumnya saya sarankan bagi pembaca untuk memahami dasar program yang sudah saya jelaskan dalam artikel sebelumnya yan berjudul Mengenal Pemrograman Stored Procedure Pada MySQL.


Cekidot…. !!!

MySQL meyediakan pernyataan IF, CASE, ITERATE, LEAVE LOOP, WHILE, dan REPEAT untuk mengatur alur kontrol program di dalam stored program.

#.# IF . . . ELSE . . .

Digunakan untuk mengeksekusi satu blok perintah bila suatu kondisi tertentu terpenuhi. Struktur IF … ini sedikit berbeda dengan bahasa program lainnya.

Syntax

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

search_condition

adalah expression yang menghasilkan nilai True dan False. Jika berisi perintah SELECT, maka perintah SELECT tersebut harus ditulis di dalam tanda kurung.

statement_list

berisi perintah SQL, atau satu blok perintah SQL yang ditandai dengan BEGIN … END atau blok perintah yang ditandai kata THEN dan sampai ketemu kata ELSE atau END IF.

IF ...END IF adalah satu blok,sama seperti blok struktur kontrol lainnya pada stored program, struktur ini harus diahkiri dengan tanda titik koma.

Contoh:

CREATE FUCTION Predikat (n INT) RETURNS VARCHAR (10)
BEGIN
DECLARE S VARCHAR (10);
IF n >= 15000 Then
set S = ‘Sangat baik’;
ELSEIF n > 10000 Then
set S = ‘Baik’;
ELSEIF n > 7500 Then
set S = ‘Cukup’;
ELSE
set S = ‘Kurang’;
END IF;
RETURN s;
END $$

Sama seperti struktur kontrol pada bahasa pemrograman lainnya, struktur blok IF … END IF bisa bersarang atau ada struktur IF . . . END IF. Masing-masing harus diakhiri huruf titik koma.

Contoh:

CREATE FUCTION Banding (n INT, m INT) RETURNS VARCHAR (50)
BEGIN
DECLARE s VARCHAR (50);
IF n = m THEN
SET s = ‘sama dengan’;
ELSE
IF n > m THEN
SET s = ‘lebih besar’;
ELSE
SET s = ‘lebih kecil’;
END IF;
SET s = CONCAT (‘adalah ‘, s, ‘ dari ‘);
END IF;
SET s = CONCAT (n, ‘ ‘, s, ‘ ‘, m, ‘ . ‘);
RETURN s;
END $$

Bentuk lain dari strutur IF yang digunakan di dalam pernyataan SQL adalah

IF (expr1, expr2, expr3)

Jika expr1 bernilai TRUE (expr1<> 0 dan expr1 <> NULL) maka IF() menghasilkan expr2; jika tidak maka IF() akan menghasilkan expr3.

Contoh:
mysql> SELECT IF (1<2, ‘ya’ , ‘tidak’);

#.# CASE


Fungsi case menghasilkan satu return value, digunakan bila ada banyak kondisi untuk dievaluasi. Value mana yang dihasilkan bergantung pada kondisi yang menghasilkan nilai True. Ada 2 bentuk CASE:

  • Simpel CASE
CASE case_value
WHEN when_value THEN
statemen_list
[WHEN when_value THEN
statement_list] . . .
[ELSE
statement_list]
END CASE

case_value adalah variabel yang akan diperiksa, when_value konstata pembanding atau kondisi yang harus dipenuhi, dan statement_list adalah konstanta atau perintah SQL yang akan dikerjakan bila kondisi terpenuhi.

Contoh :

CREATE FUCTION TA
( GAJI_POKOK DECIMAL,
ANAK TINYINT )
RETURNS DECIMAL
BEGIN
DECLARE T DECIMAL;
CASE ANAK
WHEN 1 THEN SET T = 0.1 * GAJI_POKOK;
WHEN 2 THEN SET T = 0.2 * GAJI_POKOK;
WHEN 3 TEHN SET T = 0.25 * GAJI_POKOK;
ELSE SET T = 0;
END CASE;
RETURN T;
END $$

  • Searched CASE

CASE
WHEN search_condition THEN
statemen_list
[ WHEN search_condition THEN
statement_list] . . .
[ELSE
statement_list]
END CASE

Pada bentuk CASE ini, statement_list mana yang akan dikerjakan bergantung pada search_condition mana yang menghasilkan True.

Contoh :

CREATE FUCTION HURUF (NILAI TINYINT)
RETURN CAHR ( 1 )
BEGIN
DECLARE C CHAR ( 1 );
CASE
WHEN NILAI >= 90 THEN SET C= ‘A’;
WHEN NILAI >= 70 THEN SET C= ‘B’;
WHEN NILAI >= 60 THEN SET C= ‘C’;
WHEN NILAI >= 50 THEN SET C= ‘D’;
ELSE SET C=’E’;
END CASE;
RETURN C;
END $$

Struktur kontrol CASE juga bisa digunakan dalam pernyataan SELECT

Contoh :

SELECT f.judul, f.harga, k,kelompok
CASE
WHEN harga IS NULL THEN ‘Maaf, harga belum ditetapkan’
WHEN harga < 10000 THEN ‘Murah’
WHEN harga < 50000 THEN ‘Cukup Murah’
WHEN harga = 50000 THEN ‘ Harga Pas’
WHEN harga < 60000 THEN ‘Cukup Mahal’
WHEN harga >= 60000 and harga < 100000 THEN ‘Mahal juga ya’
ELSE ‘Mahal Sekali!’
END AS Keterangan
FROM Film f
INNER JOIN KelompokFilm k ON f.KodeKelompok = k.KodeKelompok
Order By f.Judul

#.# LEAVE

Pernyataan LEAVE label digunakan untuk keluar dari struktur kontrol yang ber-label. Pernyataan ini dapat digunakan pada struktur BEGIN … END dan struktur loop (LOOP, REPEAT, dan WHILE).

Pernyataan LAVE harus diikuti dengan label. Jika label yang mengikutinya adalah blok terluar atau struktur loop terluar, berarti program selesai. Hal ini bisa kita manfaatkan untuk mengakhiri stored procedure dari tengah kode program.

Syntax

LEAVE label

Contoh :

CREATE PROCEDURE TesProc()
BEGIN
DECLARE I int;
SET i=l ;

ulang; LOOP
SET i=i+l;
IF i=10 THEN
LEAVE ulang # keluar dari blok ulang (pengulangan)
END IF;
END LOOP ulang;

SELECT ‘Hitungan sampai 10’;
END $$

Pada stored function, dengan pernyataan RETURN kita bisa keluar mengakhiri stored function dari mana saja, tetapi tidak dengan stored procedure. Untuk itu kita bisa menggunakan LEAVE untuk keluar dari stored procedure.

Contoh :

CREATE PROCEDURE TesProc(xKode INT)
SP_Ini; BEGIN
DECLARE a, b INT;
DECLARE done INT DEFAULT FALSE;
DECLARE curl CURSOR FOR
SELECT id, data FROM test.tl Where Kode=xKode;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
IF Value is null or Value=0 then
LEAVE SP_Ini;
END IF;

OPEN curl;
loop_baca; LOOP
FETCH curl INTO a, b;
IF done THEN
LEAVE loop_baca;
END IF;

IF b < c
INSERT INTO test.t3 VALUES (a, b);
END IF;
END LOOP;
CLOSE curl;
END;

#.# LOOP

LOOP adalah bentuk pengulangan yang sederhana, digunakan untuk mengulangi pengerjaan suatu blok yang berisi pernyataan SQL. Bentuk struktur kontrol ini tidak memiliki syarat atau kondisi agar pengulangan berhenti, sehingga di dalam blok pengulangan diberi struktur IF dan LEAVE agar pengulangan bisa berhenti.

Syntax

[begin_label;] LOOP
statement_list
END LOOP [end_label]

Contoh :

CREATE FUNCTION FACTORIAL (N TINYINT)
RETURN INT
BEGIN
DECLARE H, I INT;
SET I = 1, H = 1;
hitung; LOOP
SET H=H*I;
SET I = I + 1;
IF I>N THEN
LEAVE hitung;
END IF;
END LOOP;
RETURN H;
END

#.# ITERATE

Digunakan untuk mengabaikan semua pernyataan sesudah ITERATE dan melompat kembali ke awal blok pengulangan. Perintah ini hanya bisa digunakan pada struktur pengulangan LOOP, REPEAT, dan WHILE.

Syntax

ITERATE label

Contoh :

CREATE PROCEDURE ulang (p1 INT)
BEGIN
labell: LOOP
SET p1 = p1 + 1;
IF p1 < 10 THEN
ITERATE labell;
END IF;

LEAVE labell;
END LOOP labell;
SET @x = p1;
END

#.# REPEAT

Perintah ini digunakan untuk mengulang pengerjaan suatu blok perintah SQL selama suatu kondisi tertentu atau sampai suatu kondisi tertentu tercapai. Pada bentuk ini pemeriksaan kondisi dilakukan di akhir pengulangan, sehingga minimal blok pengulangan dikerjakan satu kali.

Syntax

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

Contoh :

CREATE PROCEDURE ulangi (p1 INT)
BRGIN
SET @x = 0;
REPEAT
SET @x = @x + 1;
UNTIL @x > p1 END REPEAT;
END

#.# WHILE

Perintah ini digunakan untuk mengulang pengerjaan suatu blok perintah SQL selama suatu kondisi tertentu atau sampai suatu kondisi tertentu tercapai. Pada bentuk ini pemeriksaan kondisi dilakukan di awal pengulangan, sehingga ada kemungkinan blok pengulangan tidak dikerjakan.

Syntax

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

search_condition”

Adalah kondisi supaya proses pengulangan dikerjakan, berupa expression yang menghasilkan boolean, True atau False. Jika boolean expression berisi perintah SELECT, maka perintah SELECT tersebut harus ditulis di dalam tanda kurung. Pengulangan akan dikerjakan selama search_condition menghasilkan nilai TRUE.

statement_list”

Berisi satu perintah SQL atau satu blok SQL yang ditandai dengan BEGIN . . . END.

Contoh :

Ulang:WHILE (SELECT AVG(price) FROM titles) < 30 DO
BEGIN
UPDATE titles SET price = price * 2;

SELECT MAX (price) FROM titles;
IF (SELECT MAX(price) FROM titles) > 50 Then
LEAVE ulang;
END IF;
END

#.# RETURN

Digunakan untuk memaksa keluar dari stored function, kembali ke pemanggil dan mengirimkan expression sebagai return value ke pemanggil.

Syntax

RETURN expression

Contoh :

DECLARE ERRNUMBER INT
Set ERRNUMBER = ERROR
If ERRNUMBER <> 0 THEN
Begin
Rollback Tran
RETURN ERRNUMBER
End

Mungkin cukup itu yang bisa saya sampaikan dalam pemrogaman MySQL. Tunggu sesi selanjutnya dalam pemrograman MySQL.

Semoga bermanfaat bagi kalian yang membaca artikel saya :)

0 coment�rios: