Transact-SQL Disampaikan oleh: Agus Wahyu Widodo, ST Program Studi Ilmu Komputer Jurusan Matematika – FMIPA Unibraw Agenda • • • • • • • • • • • Pengertian T-SQL Bagaimana kerangka T-SQL Pendefinisian variabel Select statement dalam T-SQL Print statement Variabel global If statement While Continue dan Break Return statement Case statement Pemahaman Dasar (1) • TRANSACT-SQL adalah bahasa pemrograman yang dikembangan dari SQL. Seperti diketahui, SQL adalah bahasa non procedural, artinya alur program tidak seperti bahasa pemrograman biasa, melainkan melalui "request" dan "response". • Melalui instruksi SQL seseorang melakukan query atau transaksi, yang kemudian akan menerima jawaban dari Database Server berupa hasil atau ResultSet. • Query dan Transaksi dilakukan di bagian Client, sedangkan pemrosesan dilakukan pada Server. Pemahaman Dasar (2) • TRANSACT-SQL mengembangkan kemampuan SQL, sehingga TRANSACT-SQL dapat melengkapi SQL dengan instruksi logic (procedural logic), yaitu program aplikasi. • Hasil proses SQL-Server (ResultSet) dapat dioleh lebih lanjut dengan menggunakan logic pemrograman procedural seperti Fungsi, Prosedur, Loop, Case, If Then Else dan lainnya. Kerangka TRANSACTSQL • TRANSACT-SQL dimulai dengan deklarasi variable dan disusul dengan Blok Program. VARIABLE DECLARATION – DECLARE BLOK PROGRAM – WITH OR WITHOUT BEGIN - END Pendefinisian Variable TSQL • Variable harus dideklarasikan sebelum digunakan. • Nama variable selalu dimulai dengan karakter @. • Variable dapat diberikan nilai melalui instruksi SELECT ataupun SET. • Contoh o DECLARE o /* deklarasi variable */ o @v1 int, o @nama varchar(30) o select @v1=100 /* memberikan nilai 100 ke v1 */ SELECT dalam T-SQL • SELECT digunakan juga untuk eksekusi aritmatika atau lainnya. • Contoh: o select @v1 = @v1 – 100 o select @tgl_skrg = now • Variable dapat digunakan untuk mengambil nilai dari sebuah query: • Contoh: (1) o declare @nama char(30) o select @nama = namainstruktur o from instruktur where inisial = 'YS' • Contoh: (2) o select @jml_maksimal = max(sallary) from SallaryEmployee PRINT dalam T-SQL • PRINT adalah fungsi yang menampilkan teks dan variable pada console (layar). • Contoh: (listingTSQL01.sql) o o o o o o declare @nama char(30) select @nama = namainstruktur from instruktur where inisial = 'YS' PRINT "Nama yang ditemukan adalah : " PRINT @nama PRINT "Nama yang ditemukan adalah : " + @nama Variable Global • Variable Global adalah variable yang disiapkan oleh SQL-Server untuk memberikan informasi kepada Client. Variable globar bersifat read-only. • Nama variable global diawali dengan @@. • Contoh: • @@error o Bilangan bulat, yang menyatakan nomor error. Jika variable tersebut tidak sama dengan 0, maka sistem memberikan indikasi bahwa terjadi error dan identitas error dinyatakan dalam angka. • @@cursor_rows o Nilai balik dari cursor yang terakhir kali dioleh. If - Statement • Model 3 IF kondisi BEGIN Instruksi1 Instruksi2 .. .. END • IF digunakan dalam mengendalikan alur program berdasarkan kondisi. • Model 1 IF kondisi Instruksi • Model 2 IF kondisi Instruksi1 ELSE Instruksi2 Contoh 1: If – Statement • ListingTSQL02.sql declare @honor int, @rata_rata int select @honor=100000 select @rata_rata=200000 if @honor > @rata_rata PRINT "Honor di atas rata-rata" else PRINT "Honor di bawah rata-rata" Contoh 2: If – Statement • Bila diaplikasikan pada tabel instruktur, maka nilai honor dapat diambil dari instruktur (listingTSQL03.sql) declare @honor int, @rata_rata int, @instruktur char(2) select @instruktur = 'AW' select @honor=honor from instruktur where inisial = @instruktur select @rata_rata = 200000 if @honor > @rata_rata PRINT "Honor di atas rata-rata" else PRINT "Honor di bawah rata-rata" Contoh 3: If – Statement • Nilai rata-rata dapat dihitung langsung dari tabel instruktur sebagai berikut (listingTSQL04.sql) declare @honor int, @rata_rata int, @instruktur char(2) select @instruktur='DE' select @honor=honor, @nama=namainstruktur from instruktur where inisial=@instruktur select @rata-rata=AVG(honor) from instruktur if @honor > @rata_rata PRINT "Honor di atas rata-rata" else PRINT "Honor di bawah rata-rata" Contoh 4: If – Statement • Berikutnya, program mendemonstrasikan penggunaan blok IF BEGIN END bila instruksi dalam IF lebih dari satu instruksi (listingTSQL05.sql) declare @honor int, @rata_rata int, @instruktur char(2), @nama varchar(16) select @instruktur='DE' select @honor=honor, @nama=namainstruktur from instruktur where inisial=@instruktur select @rata_rata=AVG(honor) from instruktur if @honor > @rata_rata BEGIN PRINT "Nama Instruktur : " + @nama PRINT "Honor di atas rata-rata" END else BEGIN PRINT "Nama Instruktur : " + @nama PRINT "Honor di bawah rata-rata" END While – Statement • WHILE digunakan dalam mengeksekusi satu blok program berulangulang sampai kondisi pada WHILE menjadi false. WHILE kondisi BEGIN .. .. END • Contoh: • Perhatikan bahwa fungsi str() diperlukan untuk mengkonvesi bilangan integer menjadi string (teks). declare @i int select @i=5 while @i > 0 begin PRINT "i = " + str(@i) select @i= @i – 1 End Continue dan Break • Continue dan Break berkaitan dengan WHILE. Continue melanjutkan alur program pada pemeriksaan kondisi WHILE sedangkan Break menghentikan alur program dari WHILE. WHILE kondisi1 BEGIN .. .. if kondisi2 CONTINUE .. END Return - Statement • RETURN akan menghentikan program dari eksekusi. RETURN dapat digunakan dalam memproses error. IF @@error <> 0 BEGIN PRINT "Error .. " RETURN END Case Statement • CASE menyederhanakan IF yang berlapis dengan tujuan agar program dapat dimengerti/dibaca dengan lebih mudah. • Sintaks: CASE WHEN kondisi1 THEN WHEN kondisi2 THEN WHEN kondisi3 THEN ELSE END Contoh 1: Case Statement declare @t char(1), @hasil varchar(255) select @t='B' select @hasil = case when @t='A' then 'Karakter A' when @t='B' then 'Karakter B' else 'Tidak Diketahui' end PRINT "Hasil adalah : " + @hasil Contoh 2: Case Statement declare @jk char, @nama varchar(16), @teks varchar(255) select @jk=jenkel, @nama=nama from peserta where nopeserta = 3 select @teks= case @jk when 'L' then 'Laki-laki' when 'P' then 'Perempuan' else '?' PRINT @nama + " adalah " + @teks Thanking You Comment & Action Items