CON T RO L - F LOW
STAT E M E N T
Tri Astuti, [Link]., [Link].
Alur Proses
Outline Percabangan
If else
Case when
Perulangan
While
Break
Continue
Alur proses, dalam setiap bahasa pemrograman, adalah sebuah
keharusan. Setiap perubahan kontrol terhadap alur proses dapat
ALUR PROSES mempengaruhi output
Secara umum ada 2 cara untuk mengontrol alur proses antara lain
1. Conditional processing/percabangan
2. Control of flow/perulangan
Secara analogi dalam kehidupan sehari-hari, percabangan dapat
dilihat ketika seseorang berjalan dan bertemu dengan
PERCABANGAN persimpangan. Disini, ada beberapa pilihan yang bisa dibuat,
apakah belok ke kanan, ke kiri, atau lurus? Ada juga pertimbangan-
pertimbangan seperti, apakah lebih jauh, jalannya rusak, atau yang
lainnya dalam setiap pilihan jalan.
Pembuatan program tidak hanya terdiri dari statement yang
dijalankan secara urut dari baris pertama sampai terakhir. Ada
beberapa statement yang mungkin membutuhkan kondisi
tertentu. Kondisi ini didalam program disebut sebagai percabangan.
T-SQL menyediakan 2 kata kunci untuk percabgangan antara lain
1. IF...ELSE
2. SELECT CASE…WHEN
Setiap percabangan membutuhkan kondisi. Dalam arti kata lain,
setiap kata kunci IF diikuti oleh kondisi. Kondisi ini adalah
IF..ELSE kondisi boolean. Penulisan kondisi boolean pada IF sama seperti
penulisan kondisi pada WHERE atau HAVING (SQL).
Ada 2 nilai yang dihasilkan oleh kondisi boolean, yaitu terpenuhi
dan tidak terpenuhi.
Jika kondisi IF terpenuhi atau bernilai TRUE, maka SQL Server akan
menjalankan sebuah perintah SQL atau menjalankan script block
(jika banyak perintah) didalam blok IF. Dengan terpenuhinya
kondisi, maka program tidak akan menjalankan blok ELSE.
Namun jika kondisi IF tidak dipenuhi atau bernilai FALSE, maka SQL
Server menjalankan script block didalam blok ELSE.
Sintaks:
IF <kondisi boolean>
<Result1>
ELSE
<Result2>
IF..ELSE
Gambar alur IF..ELSE
Contoh
IF..ELSE DECLARE @bil INT
SET @bil = 5
IF @bil%2 = 0
PRINT 'bilangan genap'
ELSE
PRINT 'bilangan ganjil'
DECLARE @nilai INT
SET @nilai = 75
IF @nilai >= 80
PRINT 'A'
ELSE IF @nilai >= 70
PRINT 'B'
ELSE IF @nilai >= 60
PRINT 'C'
ELSE IF @nilai >= 50
PRINT 'D'
ELSE
PRINT 'E'
Digunakan untuk prasyarat dengan berbagai kondisi, untuk setiap
SELECT kondisi dengan ekspresi nilai yang tetap
CASE..WHEN Case statement akan mengembalikan nilai pasa kondisi tertentu
Case dapat digunakan pada query SELECT dengan menggunakan
clausa WHERE, ORDER BY dan GROUP BY serta pada statement
INSERT
Sintaks
SELECT CASE <kondisi>
WHEN <kondisi1> THEN <Result1>
WHEN <kondisi2> THEN <Result2>
…
ELSE <Result>
END
Contoh
SELECT DECLARE @idproduk char
CASE..WHEN SET @idproduk = '2'
SELECT
CASE @idproduk
WHEN '1' THEN 'Sabun'
WHEN '2' THEN 'Biskuit'
WHEN '3' THEN 'Susu'
ELSE 'id produk tdk terdaftar'
END
DECLARE @nilai INT
SET @nilai = 68
SELECT
CASE
WHEN @nilai >= 80 THEN 'A'
WHEN @nilai >= 70 THEN 'B'
WHEN @nilai >= 60 THEN 'C'
WHEN @nilai >= 50 THEN 'D'
ELSE 'E'
END
Ada saatnya kode program mengharuskan programmer untuk
menulis kode yang sama berulang-ulang
PERULANGAN
Untuk dapat mencapai efisiensi dalam pengerjaan kode program,
ada sebuah konsep yang disebut dengan perulangan (looping).
Dengan perulangan ini, kode program bisa ditulis sekali dan
menghasilkan output berkali-kali
T-SQL menyediakan kata kunci untuk perulangan antara lain
1. WHILE
2. WHILE dan BREAK
3. WHILE dan CONTINUE
4. WHILE, BREAK dan CONTINUE
Cara kerja WHILE adalah melakukan pengecekan terlebih dahulu
pada kondisi boolean. Selama kondisi bernilai TRUE, maka blok
WHILE WHILE akan dijalankan. Ketika kondisi bernilai FALSE maka proses
perulangan akan berhenti
Sintaks
WHILE <condition>
BEGIN
<...statements looping...>
END
WHILE
Gambar alur WHILE
Contoh
DECLARE @angka INT
WHILE SET @angka=1
WHILE ( @angka < 10)
BEGIN
PRINT 'Angka = ' + CONVERT(VARCHAR,@angka)
SET @angka = @angka + 3
END
DECLARE @angka INT
SET @angka=1
WHILE (@angka < 10)
BEGIN
PRINT ‘Tolong Berhenti!‘
END
BREAK statement digunakan pada statement WHILE untuk keluar
dari perulangan saat berada pada kondisi tertentu.
WHILE..BREAK Secara umum IF…ELSE statement digunakan untuk mengetahui
apakah kondisinya terpenuhi atau tidak
Sintaks
WHILE <condition>
BEGIN
<...statements looping...>
IF <Kondisi>
BREAK
END
END
Contoh
WHILE ..BREAK DECLARE @angka INT
SET @angka=1
WHILE (@angka <= 10)
BEGIN
PRINT 'Angka = ' + CONVERT(VARCHAR,@angka)
IF @angka > 7
BEGIN
BREAK
END
SET @angka = @angka + 2
END
CONTINUE statement digunakan pada statement WHILE untuk
WHILE..CONTINU keluar dari perulangan saat berada pada kondisi tertentu kemudian
memulai iterasi/perulangan baru dari awal loop
E
Sintaks
WHILE <condition>
BEGIN
<...statements looping...>
IF <Kondisi>
CONTINUE
END
END
Contoh
WHILE ..CONTINUE DECLARE @angka INT
SET @angka=1
WHILE (@angka <= 10)
BEGIN
IF @angka = 7
BEGIN
SET @angka = @angka + 1
CONTINUE
END
PRINT 'Angka = ' + CONVERT(VARCHAR,@angka)
SET @angka = @angka + 2
END
Tuliskan query dgn kondisi berikut menggunakan IF statement:
Jika kode jabatan D maka nama jabatan adalah Direktur
LATIHAN Jika kode jabatan M maka nama jabatan adalah Manager
Jika kode jabatan S maka nama jabatan adalah Sekretaris
Tuliskan query dgn kondisi berikut menggunakan CASE statement:
Jika kode jabatan D maka gaji = 10000000
Jika kode jabatan M maka gaji = 7000000
Jika kode jabatan S maka gaji = 3500000
Tuliskan output dari query berikut
LATIHAN DECLARE @count INT;
SET @count = 5;
WHILE @count <= 5
BEGIN
PRINT @count
SET @count = @count + 2;
END;
DECLARE @count INT;
SET @count = 3;
WHILE @count < 10
BEGIN
PRINT @count
SET @count = @count + 2;
END;
Tuliskan output dari query berikut
LATIHAN DECLARE @count INT;
SET @count = 1;
WHILE @count <= 10
BEGIN
IF @count >= 5
BEGIN
BREAK
END
PRINT @count
SET @count = @count + 1;
END;
Tuliskan output dari query berikut
LATIHAN
DECLARE @count INT;
DECLARE @mod INT;
SET @count = 1;
WHILE @count<= 10
BEGIN
set @mod = @count % 2
IF @mod = 1
BEGIN
SET @count = @count + 3;
CONTINUE
END
PRINT @count
SET @count = @count + 2;
END;