Materi MySQL Part 6
-
Upload
seno-demejo -
Category
Documents
-
view
218 -
download
0
Transcript of Materi MySQL Part 6
-
8/10/2019 Materi MySQL Part 6
1/14
4.Pemrograman di Function dan Procedure
Di dalam function dan procedure, kita bisa memasukkan logika
pemrograman. Ada beberapa karakteristik pemrograman yang
didukung oleh MySQL. Beberapa di antaranya adalah
penggunaan variabel, kendali kondisional, dan perulangan.
4.1 Variabel
Seperti pada pemrograman pada umumnya, kita bisa
menggunakan variabel lokal pada function dan procedure.
endeklarasian variabel memiliki sintaks sebagai berikut!
D"#LA$" var%name &, var%name' ... type &D"(A)L* value'
+ilai inisialisasi variabel dapat dilakukan menggunakan
statement D"(A)L*. ika statement D"(A)L* tidak digunakan,
maka nilai inisialisasi variabel adalah +)LL. enamaan variabel
lokal bersifat case insensitive. Berikut adalah beberapa contoh
deklarasi variabel!
D"#LA$" total%sale -+*
D"#LA$" , y -+* D"(A)L* /
emberian nilai ke sebuah variabel dilakukan denganmenggunakan statement S"*. 0asil dari 1uery 2uga dapat
dimasukkan ke dalam variabel menggunakan S"L"#* -+*3.
Berikut 4 adalah beberapa contoh pemberian nilai ke variabel.
S"* total%sale 5 6/7
S"L"#* #3)+*89: -+*3 numeker2a ($3M peker2a7
-
8/10/2019 Materi MySQL Part 6
2/14
$uang lingkup variabel adalah di antara blok B";-+ 4 "+D di
mana variabel tersebut dide delimiter %
mys1l> #$"A*" ()+#*-3+ add*a8ga2i (L3A*8E,F::
G> $"*)$+S (L3A* 8E,F:
G> B";-+
G> D"#LA$" ta (L3A* D"(A)L* /./67
G> $"*)$+ ga2i 9 8@ G ta:7
G> "+D %
Query 3?, / ros aected 8/.// sec:
mys1l> D"L-M-*"$ 7
ada contoh di atas, dibuat sebuah function dengan variabel
bernama ta. =ariabel ini diset memiliki nilai default /./6 dan
digunakan untuk mengubah nilai ga2i. #ontoh di baah ini
menun2ukkan penggunaan function add*a.
mys1l> select nama%depan, add*a8ga2i: from peker2a7
HGGGGGGGGGGGGHGGGGGGGGGGGGGGH
-
8/10/2019 Materi MySQL Part 6
3/14
I nama%depan I add*a8ga2i: I
HGGGGGGGGGGGGHGGGGGGGGGGGGGGH
I ohn I JK6///.// I
I Alison I JK6///.// I
I ames I 6////.// I
I #elia I 6////.// I
I $obert I @////.// I
I Linda I @////.// I
I David I JK6///.// I
I 0ercule I JK6///.// I
I Lincoln I JK6///.// I
I Sherlock I 6////.// I
HGGGGGGGGGGGGHGGGGGGGGGGGGGGH
@/ ros in set, C arnings 8/.FE sec:
S"L"#* add*a8@////:7
+ama variabel lokal seharusnya tidak sama dengan nama kolom
dalam tabel database. ika pada statement SQL seperti S"L"#*
terdapat referensi ke kolom tabel dengan nama yang sama,
MySQL mereferensikannya sebagai nama variabel. Berikut adalah
contohnya.
mys1l> D"L-M-*"$ 99
mys1l> #$"A*" $3#"D)$" checkScope8:
G> B";-+
G> D"#LA$" nama%depan =A$#0A$8@6: D"(A)L* bob7
G> S"L"#* nama%depan ($3M peker2a7
G> "+D 99
Query 3?, / ros aected 8/.6J sec:
-
8/10/2019 Materi MySQL Part 6
4/14
mys1l> D"L-M-*"$ 7
mys1l> call checkScope8:7
HGGGGGGGGGGGGH
I nama%depan I
HGGGGGGGGGGGGH
I bob I
I bob I
I bob I
I bob I
I bob I
I bob I
I bob I
I bob I
I bob I
I bob I
HGGGGGGGGGGGGH
@/ ros in set 8/.// sec:
ada contoh di atas, ketika kita melakukan pemilihan S"L"#*
untuk nama%depan, nilai yang ditampilkan adalah nilai default
dari variable nama%depan, yaitu bob.
4.2 Kendali Kondisional
Seperti layaknya bahasa pemrograman, kita 2uga bisa
mende
-
8/10/2019 Materi MySQL Part 6
5/14
4.2.1 Kendali IF
Sintaks dasar dari -( adalah sebagai berikut!
-( search%condition*0"+ statement%list
&"LS"-( search%condition*0"+ statement%list' 4
&"LS" statement%list'
"+D -(7
+ilai search%condition dievaluasi. ika bernilai true, maka
statement%list setelah *0"+ di2alankan. +amun
2ika bernilai false, maka statement%list pada "LS" yang
di2alankan. enggunaan banyak kondisi dapat dilakukan dengan
statement "LS"-(. Berikut adalah contoh penggunaan -(!
mys1l> delimiter NN
mys1l> create function hitung;a2i8ga2i Ooat:
G> returns varchar8F/:
G> begin
G> declare bayaran varchar8F/:7
G> if ga2i PJ///// then set bayaran5;a2i $endah7
G> else set bayaran5;a2i *inggi7
G> end if7
G> return bayaran7
G> end NN
Query 3?, / ros aected 8/.// sec:
mys1l> delimiter 7
mys1l> select nama%depan, nama%belakang, hitung;a2i8ga2i:
from peker2a7
-
8/10/2019 Materi MySQL Part 6
6/14
HGGGGGGGGGGGGHGGGGGGGGGGGGGGGHGGGGGGGGGGGGGGGGH
I nama%depan I nama%belakang I hide;a2i8ga2i: I
HGGGGGGGGGGGGHGGGGGGGGGGGGGGGHGGGGGGGGGGGGGGGGH
I ohn I Doe I ;a2i *inggi I
I Alison I Mathes I ;a2i *inggi I
I ames I Smith I ;a2i *inggi I
I #elia I $ice I ;a2i *inggi I
I $obert I Black I ;a2i *inggi I
I Linda I ;reen I ;a2i *inggi I
I David I Larry I ;a2i *inggi I
I 0ercule I oirot I ;a2i *inggi I
I Lincoln I $hyme I ;a2i *inggi I
I Sherlock I 0olmes I ;a2i *inggi I
HGGGGGGGGGGGGHGGGGGGGGGGGGGGGHGGGGGGGGGGGGGGGGH
@/ ros in set, C arnings 8/.// sec:
4.2.2 Kendali CASE
Sintaks dari kendali #AS" adalah sebagai berikut!
#AS" case%value
0"+ hen%value*0"+ statement%list
&0"+ hen%value*0"+ statement%list' ...
&"LS" statement%list'
"+D #AS"
ada sintaks di atas, case%value dibandingkan dengan semua
nilai hen%value sampai ditemukan yang sesuai. ika ditemukan,
maka statement%list pada 0"+ yang bersesuaian akan
di2alankan. ika tidak ada nilai hen%value yang sesuai, maka
-
8/10/2019 Materi MySQL Part 6
7/14
statement%list pada "LS" yang di2alankan 82ika ada:. Berikut
adalah contoh penggunaan #AS"!
*ambahkan kolom peker2aan
mys1l> alter table peker2a add peker2aan varchar8C/:7
Query 3?, @@ ros aected 8/.F@ sec:
*ambahkan data menggunakan insert
mys1l> insert into peker2a values8aaa,bbb,C/////,Manager:7
Query 3?, @ ro aected 8/./C sec:
mys1l> D"L-M-*"$ RR
mys1l> #$"A*" ()+#*-3+ calc*a8peker2aan =A$#0A$ 8F/::
G> $"*)$+S (L3A*8C,F:
G> B";-+
G> D"#LA$" ta (L3A*8C,F: D"(A)L* /./67
G> #AS" peker2aan
G> 0"+ Manager *0"+ S"* ta 5 /.@7
G> 0"+ rogrammer *0"+ set ta 5 /./K7
G> 0"+ *ester *0"+ set ta 5 /./7
G> "LS" S"* ta 5 /./67
G> "+D #AS"7
G> $"*)$+ ta7
G> "+D RR
Query 3?, / ros aected 8/./ sec:
mys1l> delimiter 7
mys1l> S"L"#* nama%depan, nama%belakang,
calc*a8peker2aan: ($3M peker2a7
HGGGGGGGGGGGGHGGGGGGGGGGGHGGGGGGGGGGGGGGGGGGGGGGH
-
8/10/2019 Materi MySQL Part 6
8/14
I nama%depan I nama%belakang I calc*a8description: I
HGGGGGGGGGGGGHGGGGGGGGGGGHGGGGGGGGGGGGGGGGGGGGGGH
I ohn I Doe I /./K I
I Alison I Mathes I /./ I
I ames I Smith I /./ I
I #elia I $ice I /.@/ I
I $obert I Black I /./ I
I Linda I ;reen I /./ I
I David I Larry I /.@/ I
I 0ercule I oirot I /./6 I
I Lincoln I $hyme I /./6 I
I Sherlock I 0olmes I /./6 I
HGGGGGGGGGGGGHGGGGGGGGGGGHGGGGGGGGGGGGGGGGGGGGGGH
@/ ros in set 8/.// sec:
Bentuk sintaks dari #AS" yang lain adalah sebagai berikut!
#AS"
0"+ search%condition*0"+ statement%list
&0"+ search%condition*0"+ statement%list' ...
&"LS" statement%list'
"+D #AS"
ada sintaks di atas, search%condition di setiap klausa 0"+
dievaluasi hingga ditemukan klausa 0"+ yang sesuai. ika tidak
ada klausa 0"+ yang sesuai, maka klausa "LS" yang
di2alankan. ika tidak ada klausa "LS" ketika semua klausa 0"+
tidak sesuai, maka akan ter2adi #ase not found for #AS"
statement error. Berikut adalah contoh penggunaan sintaks #AS"
4 0"+ tersebut!
-
8/10/2019 Materi MySQL Part 6
9/14
mys1l> delimiter TT
mys1l> create function deskripsi8peker2aan varchar8FF6::
G> returns Ooat8C,F:
G> begin
G> declare des Ooat8C,F: default /./67
G> case peker2aan
G> hen Manager then set des5/.@7
G> hen rogramer then set des5/./K7
G> hen Security then set des5/./7
G> else set des 5/./67
G> end case7
G> return des7
G> end TT
Query 3?, / ros aected 8/.// sec:
mys1l> delimiter 7
mys1l> select nama%depan, nama%belakang,
deskripsi8peker2aan: from peker2a7
HGGGGGGGGGGGGHGGGGGGGGGGGGGGGHGGGGGGGGGGGH
I nama%depan I nama%belakang I deskripsi I
HGGGGGGGGGGGGHGGGGGGGGGGGGGGGHGGGGGGGGGGGH
I ohn I Doe I +)LL I
I Alison I Mathes I +)LL I
I ames I Smith I +)LL I
I #elia I $ice I +)LL I
I $obert I Black I +)LL I
I Linda I ;reen I +)LL I
I David I Larry I +)LL I
I 0ercule I oirot I +)LL I
-
8/10/2019 Materi MySQL Part 6
10/14
I Lincoln I $hyme I +)LL I
I Sherlock I 0olmes I +)LL I
HGGGGGGGGGGGGHGGGGGGGGGGGGGGGHGGGGGGGGGGGH
@/ ros in set 8/.// sec:
4.3 Perulangan
ada function dan procedure 2uga disediakan perulangan.
Beberapa bentuk perulangan yang disediakan
dalam MySQL adalah 0-L",$""A* 4 )+*-L, dan L33.
4.3.1 Perulangan WI!E
Bentuk sintaks untuk perulangan 0-L" adalah sebagai berikut!
0-L" search%condition D3
statement%list
"+D 0-L"
Statement%list yang terdapat dalam 0-L" diulang selama
search%condition bernilai true.
statement%list terdiri atas satu atau lebih statement SQL, setiap
statementnya dipisahkan dengan
delimiter titik koma 87:. Berikut adalah contoh penggunaan
0-L".
mys1l> delimiter TT
mys1l> create procedure mod@F8in number int8@/::
G> begin
G> hile number mod @F>/ do
-
8/10/2019 Materi MySQL Part 6
11/14
G> set number 5 number H @7
G> end hile7
G> select number7
G> end TT
Query 3?, / ros aected 8/.@@ sec:
mys1l> delimiter 7
mys1l> call mod@F8@/:7
HGGGGGGGGH
I number I
HGGGGGGGGH
I @F I
HGGGGGGGGH
@ ro in set 8/./6 sec:
Query 3?, / ros aected 8/./ sec:
mys1l> call mod@F8FJ:7
HGGGGGGGGH
I number I
HGGGGGGGGH
I FJ I
HGGGGGGGGH
@ ro in set 8/.// sec:
Query 3?, / ros aected 8/.// sec:
J.C.F erulangan $""A* 4 )+*-L
Sintaks dari $""A* )+*-L 4 adalah sebagai berikut!
-
8/10/2019 Materi MySQL Part 6
12/14
$""A*
statement%list
)+*-L search%condition
"+D $""A*
Statement%list di dalam $""A* dilakukan secara berulang
hingga ekspresi search%condition bernilai true. 3leh karena itu,
sebuah $""A* memasuki perulangan paling sedikit sebanyak
satu kali. statment%list terdiri atas satu atau lebih statement,
masingGmasing dipisah dengan delimiter titik koma 87:. Berikut
adalah contoh penggunaan $""A* 4 )+*-L.
mys1l> delimiter
mys1l> create procedure repeatDemo8in number int8@/::
G> begin
G> repeat
G> set number 5 number H @7
G> until number mod @/ 5 /
G> end repeat7
G> select number7
G> end TT
Query 3?, / ros aected 8/.// sec:
mys1l> delimiter 7
mys1l> call repeatDemo8@J:7
HGGGGGGGGH
I number I
HGGGGGGGGH
I F/ I
HGGGGGGGGH
@ ro in set 8/.// sec:
-
8/10/2019 Materi MySQL Part 6
13/14
Query 3?, / ros aected 8/./@ sec:
4.3.3 Perulangan !""P
Sintaks dari perulangan L33 adalah sebagai berikut!
&begin%label!' L33
statement%list
"+D L33 &end%label'
L33 merupakan bentuk perulangan sederhana. erulangan
dilakukan terhadap statement%list, yang terdiri atas beberapa
statement dengan dipisahkan oleh tanda titik koma 87:.
Statement di dalam L33 diulang sampai L33 berakhir. #ara
mengakhiri L33 biasanya dilakukan dengan statement L"A=".
*anda perulangan dilakukan menggunakan -*"$A*". Berikut
adalah contoh penggunaan L33.
mys1l> delimiter TT
mys1l> create procedure iterateDemo8number int:
G> begin
G> label@! loop
G> set number 5 number H @7
G> if number mod K>/ then
G> iterate label@7
G> end if7
G> leave label@7
G> end loop label@7
G> select number7
G> end TT
-
8/10/2019 Materi MySQL Part 6
14/14
Query 3?, / ros aected 8/.// sec:
mys1l> delimiter 7
mys1l> call iterateDemo8@/:7
HGGGGGGGGH
I number I
HGGGGGGGGH
I @J I
HGGGGGGGGH
@ ro in set 8/.// sec:
Query 3?, / ros aected 8/./F sec:
mys1l> call iterateDemo8F/:7
HGGGGGGGGH
I number I
HGGGGGGGGH
I FF I
HGGGGGGGGH
@ ro in set 8/.// sec:
Query 3?, / ros aected 8/./F sec: