Praktikum
6 TRANSACT SQL Tujuan : Praktikan mampu untuk mengerti dan memahami Transact-SQL Alat dan Bahan : 1. Buku literatur mengenai sistem database, terutama yang menggunakan DBMS SQL Server 2000, khususnya mengenai trigger. 2. Modul praktikum VII. Landasan Teori : 1. Transact-SQL TRANSACT-SQL adalah bahasa pemrograman yang dikembangkan dari SQL. Seperti diketahui SQL adalah bahasa non procedural, artinya alur program tidak seperti bahasa pemrograman bisa, melainkan melalui “request” dan “response”. Melalui perintah 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. 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 diolah lebih lanjut dengan menggunakan logic pemrograman procedural seperti Fungsi, Procedure, Loop, Case, If Then Else, dan lainnya. 2. Kerangka Transact-SQL TRANSACT-SQL dimulai dengan deklarasi variable dan disusul dengan blok program. Variable harus dideklarasikan sebelum digunakan. Nama variable selalu dimulai dengan karakter @. Variable dapat diberikan nilai melalui instruksi SELECT. DECLARE /* deklarasi variable */ @v1 int, @nama varchar(30)
Keterangan : SELECT digunakan juga untuk eksekusi aritmatika atau lainnya. Misalnya :
SELECT @v1 = @v1 – 100
Variable dapat digunakan untuk mengambil nilai dari sebuah query: Contoh :
DECLARE @nama char(30) SELECT @nama = nama FROM mahasiswa_XXX WHERE nrp=’ 02113216’ PRINT @nama
Hasil:
Bambang
PRINT adalah fungsi yang menampilkan teks dan variable pada console (layar). Contoh:
PRINT “Nama yang ditemukan adalah :” PRINT @nama PRINT “Nama yang ditemukan adalah :”+@nama
3. Menjalankan Program Transact-SQL Deklarasi Variable Tipe dari variable yang dapat dideklarasikan adalah bagian dari Ms. SQL yaitu char, varchar, datetime, int, money, dan lainnya. Contoh deklarasi Variable:
DECLARE @berat int, @nama varchar(50), @posisi varchar(50), @tgl_hari_ini datetime, @tgl_nanti datetime SELECT @berat=100 SELECT @nama='CLARK KENT' SELECT @tgl_hari_ini=getdate() SELECT @posisi='SUPERMAN' SELECT @tgl_nanti=@tgl_hari_ini PRINT ( 'Berat anda adalah') PRINT ( @Berat ) PRINT ( @nama ) PRINT ( @posisi ) PRINT ( @tgl_hari_ini ) PRINT ( @tgl_nanti )
Hasil: Berat anda adalah 100 CLARK KENT SUPERMAN APRIL 4 2008 10:18AM APRIL 4 2008 10:18AM
4. Variable Global Variable global adalan variable yang disiapkan oleh SQL-Server untuk memberikan informasi kepada Client. Variable global bersifat read-only. Nama variable global diawali dengan @@. : adalah bilangan bulat yang menyatakan nomor error. Jika variable tersebut tidak sama dengan 0, maka system memberikan indikasi bahwa terjadi error dan identitas error dinyatakan dalam angka. @@cursor_rows : adalah nilai balik dari cursor yang terakhir kali diolah. @@fetch_status : adalah nilai balik dari “fetch” pada cursor. Nilai 0 adalah OK. @@identity : memberikan nilai otomatis setiap kali INSERT dilakukan. Nilai ini adalah identitas dari record tersebut. @@nestlevel : adalah nesting level dari stored procedures atau triggers @@rowcount : memberikan nilai balik berupa jumlah baris (rows) yang terpengaruh oleh instruksi terakhir. Setelah instruksi IF atau WHILE, maka @@rowcount dihapus menjadi 0. @@spid : adalah Server Process Id @@error
5. IF IF digunakan dalam mengendalikan alur program berdasarkan kondisi.
IF kondisi Instruksi IF kondisi Instruksi1 ELSE Instruksi2 IF kondisi BEGIN Instruksi1 Instruksi2 …… END
Contoh:
DECLARE @honor int, @rata_rata int SELECT @honor=100000 SELECT @rata_rata=200000 IF @honor > @rata_rata PRINT ('Honor diatas rata-rata') ELSE PRINT ('Honor dibawah rata-rata')
Hasil:
Honor dibawah rata-rata
Bila diaplikasikan pada tabel asisten_XXX, maka nilai honor dapat diambil dari asisten:
DECLARE @honor int, @rata_rata int, @asisten char(8) SELECT @asisten='03010006' SELECT @honor=honor FROM asisten_xxx WHERE npm=@asisten SELECT @rata_rata=200000 IF @honor > @rata_rata PRINT ('Honor diatas rata-rata') ELSE PRINT ('Honor dibawah rata-rata')
penggunaan blok IF BEGIN END dapat dilakukan bila instruksi dalam IF lebih darisatu instruksi. 6. WHILE WHILE digunakan dalam mengeksekusi satu blok program berulang-ulang sampai kondisi pada WHILE menjadi false.
WHILE kondisi BEGIN … … END
Contoh:
DECLARE @i int SELECT @i=5 WHILE @i > 0 BEGIN PRINT ' i = ' + str( @i) SELECT @i = @i - 1 END
Hasil: i=5 i=4 i=3 i=2 i=1 Perhatikan bahwa fungsi str() diperlukan untuk mengkonversi bilangan integer menjadi string (teks). 7. CONTINUE dan BREAK CONTINUE dan BREAK berkaitan dengan WHILE. CONTINUE melanjutkan alur program pada pemeriksaan kondisi WHILE, sedangkan BREAK mengakibatkan alur program keluar dari WHILE.
WHILE kondisi1 BEGIN … … IF kondisi2 CONTINUE … END WHILE kondisi1 BEGIN … … IF kondisi2 BREAK … … END
8. RETURN RETURN akan menghentikan program dari eksekusi. RETURN dapat digunakan dalam memproses error. IF @@error <> 0 BEGIN PRINT “Error…” RETURN END
9. CASE CASE menyederhanakan IF yang berlapis dengan tujuan agar program dapat dimengerti/dibaca lebih mudah.
IF kondisi1 instruksi1 ELSE IF kondisi2 instruksi2 ELSE IF kondisi3 instruksi3 ELSE instruksi4
Dapat diganti:
CASE WHEN kondisi1 THEN instruksi1 WHEN kondisi2 THEN instruksi2 WHEN kondisi3 THEN instruksi3 ELSE instruksi4 END
Contoh:
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
Hasil:
Hasil adalah : Karakter B
Perhatikan bahwa CASE diatas digunakan untuk mengambil nilai variable: SELECT @hasil=CASE Berikut adalah variasi dari CASE:
DECLARE @t char(1), @hasil varchar(255) SELECT @t='X' SELECT @hasil= CASE @t WHEN 'A' THEN 'Karakter A' WHEN 'B' THEN 'Karakter B' ELSE 'Tidak diketahui' END PRINT 'Hasil adalah '+@hasil
Contoh pada SQL-Query:
DECLARE @jk char, @nama varchar(16), @teks varchar(255) SELECT @jk=jk, @nama=nama FROM mahasiswa_xxx WHERE npm='02113216' SELECT @teks= CASE @jk WHEN 'L' THEN 'Laki-laki' WHEN 'P' THEN 'Perempuan' ELSE '?' END PRINT @nama + ' adalah ' + @teks
Hasil:
Bambang adalah Laki-laki
Tugas Pendahuluan Praktikum 1. Apa yang dimaksud dengan T-SQL ? 2. Bagaimana kerangka dari T-SQL ? 3. Struktur kontrol apa saja yang dapat digunakan dalam T-SQL ? 4. Bagaimana menjalankan T-SQL ? Percobaan : Sebelum memulai, aktifkan Tools Query Analyzer Percobaan 1
: Modifikasilah contoh WHILE pada modul ini, sehingga menjadi menjadi satu baris saja seperti berikut: 1. Bilangan real
Urut = 1, 2, 3, 4, 5
2. Bilangan genap
Genap = 2, 4, 6, 8, 10
3. Bilangan ganjil
Ganjil = 1, 3, 5, 7, 9
Nb: harus sama seperti contoh di dalam kotak diatas (ada tulisan dan tanda koma) Percobaan 2
: Buat sebuah T-SQL untuk menghitung Nilai rata-rata langsung dari tabel asisten_xxx. Buat keterangan bahwasannya assisten tersebut memiliki honor diatas rata-rata atau dibawah rata-rata.