13.2. Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat:
1. Memahami dasar pemrograman T-SQL seperti deklarasi variabel, penugasan variabel, seleksi
kondisi, iterasi
2. Membuat stored procedure dan user defined function (UDF)
Misalnya apabila ingin membuat variabel bertipe data VARCHAR(255) maka sintaksisnya:
DECLARE @name VARCHAR(255) = 'Budi';
13.4.3.Penugasan/Pengisian Variabel
Untuk mengisi variabel selain melalui inisialisasi melalui deklarasi, digunakan sintaksis berikut.
SET @namaVariabel = nilai
Apabila nilai suatu variabel diisi melalui hasil query SELECT maka sintaksis yang digunakan adalah
sebagai berikut.
SELECT @nameVariabel = namaKolom FROM tabel
Misalnya apabila ingin mengisi variabel @name dari hasil query SELECT pada instructor:
SELECT @name = name FROM instructor where ID=14365;
Contoh lain misalnya mengubah dari VARCHAR menjadi INT pada klausa SELECT:
SELECT CAST(ID AS INT) as ID_INT, * FROM instructor
b. CASE…WHEN
13.4.7.Iterasi
Sintaksis untuk melakukan iterasi dalam T-SQL menggunakan WHILE adalah sebagai berikut. WHILE
sangat penting untuk digunakan dalam iterasi data yang dikenal dengan CURSOR. Namun, materi ini tidak
akan membahas penggunaan CURSOR itu sendiri.
WHILE Boolean_expression
{ sql_statement | statement_block | BREAK | CONTINUE }
Misalnya untuk mencetak angka 1 sampai 5 menggunakan WHILE adalah sebagai berikut.
DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=5)
BEGIN
PRINT @intFlag
SET @intFlag = @intFlag + 1
END
Dalam iterasi untuk keluar dari iterasi keyword yang digunakan adalah BREAK sedangkan untuk
melewati (skip) iterasi keyword yang digunakan adalah CONTINUE.
a. Parameter Input
Input parameter berfungsi untuk memasukkan nilai argumen ke parameter untuk diproses di dalam
prosedur. Sintaksis untuk stored procedure dengan parameter input adalah sebagai berikut.
CREATE { PROC | PROCEDURE } procedure_name @parameter1 tipe_data, ...
Berikut ini adalah contoh stored procedure untuk menampilkan instructor sebagai advisor serta
student yang dibimbing tergantung dari suatu instructor tertentu (dengan satu parameter yaitu nama
instructor-nya).
CREATE PROCEDURE GetAdvisor2
@name VARCHAR(50)
AS
SELECT * FROM instructor i
JOIN advisor a ON i.ID=a.i_ID
JOIN student s ON s.ID=a.s_ID
WHERE i.name LIKE @name
GO
Untuk memanggil stored procedure dengan parameter maka setelah nama stored procedure
tambahkan spasi kemudian nilai dari parameternya, pisahkan dengan koma untuk parameter kedua, dst.
EXEC GetAdvisor2 '%na%'
b. Parameter Output
Output parameter berfungsi untuk mengeluarkan/mengembalikan suatu nilai dari dalam prosedur
ke parameter supaya nantinya dapat diproses di luar prosedur. Sintaksis untuk stored procedure dengan
parameter output adalah sebagai berikut.
CREATE { PROC | PROCEDURE } procedure_name @parameter1 tipe_data OUT/OUTPUT, ...
Contoh berikut untuk membuat stored procedure untuk menampilkan daftar instructor yang berada
di suatu department (misalnya “Comp. Sci.”) beserta salary tertinggi yang dikembalikan melalui parameter
output.
CREATE PROCEDURE GetInstructorSalary
@dept_name VARCHAR(50),
@max_salary MONEY OUTPUT
AS
SELECT * FROM instructor
WHERE dept_name = @dept_name
CONTOH UDF 1
UDF berikut berfungsi untuk mengembalikan nama hari tergantung dari inisial namanya adalah sebagai
berikut.
CREATE FUNCTION GetDayName
(@initial VARCHAR(1))
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @name VARCHAR(50)
SET @name =
CASE
WHEN @initial = 'M' THEN 'Monday'
WHEN @initial = 'T' THEN 'Tuesday'
WHEN @initial = 'W' THEN 'Wednesday'
WHEN @initial = 'R' THEN 'Thursday'
WHEN @initial = 'F' THEN 'Friday'
END
RETURN @name
END;
CONTOH UDF 2
UDF berikut berfungsi untuk mengembalikan lama suatu time_slot (jadwal kuliah) dalam satuan
menit.
CREATE FUNCTION GetSlotDuration(
@start_hour INT,
@start_min INT,
@end_hour INT,
@end_min INT
)
RETURNS INT
AS
BEGIN
RETURN @total_min
END
Contoh berikut untuk memanggil UDF GetSlotDuration menggunakan query SELECT dan pada klausa
WHERE, yang mana GetSlotDuration > 50 menit.
SELECT *, dbo.GetSlotDuration(start_hr,start_min,end_hr,end_min) as Duration
FROM time_slot
13.5. Latihan
1. Buat stored procedure yang menampilkan advisor termasuk data instructor dan student dengan
parameter nama student yang dicari (sebagai masukan dalam parameter input).
2. Buat stored procedure yang menampilkan kuliah yang diambil pada tabel takes termasuk data student
dengan parameter nama student yang dicari (sebagai masukan dalam parameter input).
3. Buat fungsi GetNilaiHuruf untuk mengembalikan nilai akhir huruf dari nilai angka dengan ketentuan
sebagai berikut.
No Rentang nilai angka Nilai Huruf
1 85 < nilai < 100 A
2 80 < nilai <= 85 A-
3 75 < nilai <= 80 B+
4 70 < nilai <= 75 B
5 65 < nilai <= 70 B-
6 60< nilai <= 65 C+
7 55 < nilai <= 60 C
8 40 < nilai <= 55 D
9 Nilai < 40 E
4. Gunakan fungsi di atas untuk mencari data kuliah yang diambil (pada tabel takes) beserta data student
dengan yang memiliki nilai A dan A- dengan memanfaatkan fungsi GetNilaiHuruf.
Contoh penggunaannya pada klausa SELECT/WHERE adalah GetNilaiHuruf(score).