• Tidak ada hasil yang ditemukan

Tujuan :

1. Mahasiswa memahami lebih mendalam mengenai fungsi programmable object . 2. Memahami penggunaan user-defined functions dalam T-SQL.

3. Memahami penggunaan stored procedures dalam T-SQL. 4. Memahami penggunaan triggers dalam T-SQL.

Tugas Pendahuluan :

1. Apa yang anda ketahui tentang komponen bahasa T-SQL! 1. Apa yang anda ketahui tentang stored procedures?

2. Apa yang anda ketahui tentang triggers?

DASAR TEORI

User-defined functions

Merupakan suatu program yang ditulis dengan T-SQL yang terdiri dari sekumpulan perintah yang tersimpan sebagai suatu objek didalam database server dengan pengambilan nilai, pada User Defined Function (UDF) ini SQL Server menginzinkan user membuat fungsinya sendiri sperti stored prosedure (Octaviani, 2010). Untuk membuat sebuah fungsi adalah sebagai berikut.

CREATE FUNCTION <nama function > ([param1], [param2], [param3], [param..n])

RETURNS <data type> AS

BEGIN

RETURN Expression END

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 56

Alter Function

Drop Function

Kata kunci RETURNS mendifinisikan tipe data yang akan menampung hasil atau nilai yang akan dikembalikan oleh fungsi ke sistem. Sedangkan RETURN akan mengembalikan hasil kerja fungsi kepada sistem. Statement-statement yang diperbolehkan dalam fungsi adalah sebagai berikut.  SET  WHILE  IF  DECLARE  SELECT  INSERT  UPDATE  DELETE

Untuk melakukan pemanggilan pada fungsi yang dibuat bisa menggunakan queri dibawah ini.

Setiap pemanggilan fungsi harus menyertakan dbo dibagian depannya. Terdapat perbedaan antara stored prosedure dengan fungsi adalah Stored Procedure tidak mengembalikan nilai,

ALTER FUNCTION <nama function > RETURNS <data type>

AS BEGIN

RETURN Expression END

DROP FUNCTION (nama_function)

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 57

sedangkan fungsi harus mengembaliakan nilai. Fungsi dan stored prosedure dapat digunakan dalam queri.

Stored procedures

Stored procedure merupakan sekumpulan statement T-SQL (batch) yang disusun sedemikian rupa untuk menjalankan tugas tertentu. Stored procedure digunakan untuk mempermudah pengolahan data dengan mendekatkan kode program dengan datanya. Stored procedure biasanya disimpan dalam sebuah nama jadi dapat diprekompilasi (Kadir, 2002).

Adpun keuntungan-keuntungan dari penggunaan stored procedure adalah sebagai berikut :  Sebuah stored procedure dikompilasi dan lebih cepat dalam mengeksekusi batch

atau queri.

 Memproses data lewat stored procedure dilakukan pada server sehingga mengurangi intensitas lalu lintas data network

 Stored procedure menawarkan pemrograman modular hal ini karena sebuah stored procedure dapat memanggil stored procedure yang lain.

 Stored procedure bisa jadi adalah salah satu komponen penting dalam keamanan databsae. Jika semua akses user melalui stored procedure maka semua akses langsung ke tabel dan data dapet dikontrol.

Pada stored procedure dikenal dua macam tipe stored procedure yaitu stored procedure yang suda ada pada sistem dan stored procedure yang dibuat oleh user. Queri untuk membuat stored procedure adalah sebagai berikut.

Nm_Scheme adalah nama dari scheme dimana kepemilikan stored procedure dinyatakan. Nm_procedure adalah nama dari stored procedure yang baru. @paramp1 adalah paramater pertama sementara tp_dta1 adalah tipe datanya. Default1 adalah opsional nilai default dari parameter tersebut. Opsi OUTPUT mengindikasikan bahwa parameter adalah parameter yang dikembalikan

CREATE PROCEDURE [nm_schema] nm_ procedure

[({@paramp1} tp_dta1 [VARYING] [=default1] [OUTPUT])]{,..} [WITH{RECOMPILE|ENCRIPTION|EXECUTE AS ’nm_user’}]

[FOR REPLECATION]

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 58

dan dapat dikembalikan kepada procedure yang memanggilnya atau kepada sistem. Jika anda ingin tiap kali agar procedure dieksekusi dikompilasi maka gunakan WITH RECOMPILE (Kadir, 2002).

Kita juga dapat melihat cara menjalankan stored procedure atau dapat memanggilnya dengan perintah:

Pada stored procedure terdapat cara untuk mengenkripsi kode stored procedure yang kita tulis agar kode tersebut tidak dilihat oleh user lain yang tidak berhak, berikut querinya.

Pada stored procedure terdapat istilah parameter, dengan parameter ini kita dapat melewatkan data untuk diolah oleh stored procedure tersebut. Ini menjadikan stored procedure sangat fleksibel (Kadir, 2002).

Triggers

Trigger merupakan sebuah mekanisme kerja yang dipanggil ketika ada sebuah aksi yang terjadi pada sebuah tabel. Penamaan triger tidak boleh melebihi 128 karakter. Aksi yang dikenali pada trigger dapat berupa statement DML bisa seperti INSERT, UPDATE, dan DELETE atau statement DDL. Biasanya yang dieksekusi oleh trigger adalah stored procedure (Octaviani, 2010).

1. Membuat sebuah trigger dapat menggunakan perintah CREATE TRIGGER, bentuk perintahnya adalah sebagai berikut:

EXEC nm_ stored procedure

ALTER PROCEDURE nm_ procedure WITH ENCRIPTION

AS

PRINT ”...”; RETURN

CREATE TRIGGER [nm_scheme]nm_trigger ON{nm_tabel | nm_view}

[WITH opsi_dml_trigger[,..]]

{FOR | AFTER | INSTEAD OF}{[INSERT][,][UPDATE][,][DELETE]} [WITH APPEND]

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 59

2. Memperbaiki trigger atau memodifikasi trigger yang ada, maka anda akan dapat menggunakan perintah ALTER TRIGGER.

3. Menghapus terigger yang tidak diperlukan, kita dapat menggunakan perintah DROP TRIGGER.

PRAKTIKUM

Kita akan mempraktikkan User-defined functions, stored procedures dan pembuatan trigger.

User-defined functions

Untuk lebih memahami tentang User defined function, tulislah queri dibawah!

Untuk melakukan pemanggilan fungsi, lakukan perintah berikut ini :

Setiap pemanggilan fungsi harus menyertakan dbo dibagian depannya. Hasilnya dapat anda lihat pada gambar dibawah ini.

Gambar 8.1 User-defined functions.

Perbedaan antara stored prosedure dan fungsi adalah stored prosedure tidak mengembalikan nilai, sedangkan fungsi harus mengembalikan nilai. Fungsi dan stored prosedure dapat digunakan dibagian queri

DROP TRIGGER nm_trigger

CREATE FUNCTION tambah (@angka1 INT,@angka2 INT) RETURNS INT

AS BEGIN

RETURN @angka1 + @angka2 END

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 60

Stored procedures

Untuk lebih memahami tentang Stored procedure, tulislah queri dibawah ini !

Pertama kita buat Stored procedure dengan nama Latihan.

Setelah selesai membuat Stored procedure, anda dapat menjalankan queri diatas dengan Stored procedure telah terdaftar, penggunaannya adalah sebagai berikut:

Anda akan melihat hasilnya pada gambar dibawah ini.

Gambar 8.2 Stored procedure.

Selanjutnya kita akan mencoba melihat isi stored procedure yang kita buat tadi dengan queri dibawah ini

CREATE PROCEDURE Latihan AS PRINT 'Latihan Procedure' RETURN

DECLARE @hitung INT SET @hitung=0 WHILE @hitung<= 10 BEGIN

PRINT 'Ini loop yang ke =' + STR(@hitung) SET @hitung = @hitung + 1

IF @hitung =6 EXEC Latihan END

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 61

Dan hasilnya adalah sebagai berikut :

Gambar 8.3 Isi stored procedure.

Demi alasan keamanan, supaya kode anda tidak dilihat oleh user lain, kita akan mengenkripsinya dengan queri dibawah ini.

Sekarang cobalah tulis queri dibawah ini, maka anda akan mendapatkan hasil seperti gambar dibawah ini.

Gambar 8.4 Message stored procedure sudah dienkripsi.

Selanjutnya kita akan mencoba mempraktekkan penggunaan parameter pada stored procedure dengan mengunakan database ”Toko”, pertama tulislah queri dibawah ini !

sp_helptext Latihan

sp_helptext Latihan ALTER PROCEDURE Latihan WITH ENCRYPTION

AS

PRINT 'Latihan Procedure' RETURN

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 62

Selanjutnya kita bisa mengeksekusi stored procedure nya dengan queri dibawah ini.

Pada queri diatas kita akan melihat data pada tabel Pembelian dengan Jumlah_Barang yang berjumlah 1 sampai 2, dan lihatlah hasilnya pada gambar dibawah ini.

Gambar 8.5 Hasil dari Stored procedure pada tabel Pembelian.

Trigger

Kita akan membuat sebuah trigger mengunakan database Toko yang kita buat. Untuk membuat sebuah trigger gunakan queri dibawah ini!

Apabila pembuatan Trigger ini sukses, maka pada Object Explorer anda akan melihat tampilan yang sama seperti gambar dibawah ini.

CREATE PROCEDURE cr_nm_barang (@stok int, @nama varchar) AS

SELECT * FROM Toko.dbo.Barang

WHERE Stok_Barang BETWEEN @stok AND @nama

EXEC cr_nm_barang 1,2

CREATE TRIGGER Stockbarang ON Pembelian FOR INSERT

AS

UPDATE b SET b.Stok_Barang = b.Stok_Barang + i.Jumlah_Pembelian FROM Barang b join inserted i ON b.ID_Barang = i.ID_Barang

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 63

Gambar 8.6 Tampilan Object Explorer hasil pembuatan Trigger.

Pada queri diatas kita akan membuat sebuah trigger dengan nama Stockbarang dimana trigger tersebut akan terpicu jika ada perubahan di tabel Pembelian. Pada pembuatan trigger ini bertujuan untuk merubah nilai Stok_Barang pada tabel Barang dengan menambahkan nilai Stok_Barang yang sekarang dengan jumlah barang yang dibeli (Jumlah_Pembelian). Perhatikan pada queri diatas terdapat kata inserted, ini merupakan logika yang digunakan untuk menyimpan data yang memicu terjadinya trigger, dalam hal ini nilai data yang dimasukkan (insert) kedalam tabel pembelian, selain inserted, tabel logika lainnya adalah deleted, tabel logika ini digunakan untuk trigger yg terpicu dengan kejadian delete(Octaviani, 2010).

Perhatikan gambar dibawah ini, gambar dibawah ini merupakan gambar pada saat kita menginsertkan data pada tabel Barang saat trigger belum dibuat, yaitu kita kondisikan nilai Stok_Barang dalam kondisi default 0.

Gambar 8.7 Tabel Barang saat Trigger belum dibuat.

Untuk mengetahui apakah trigger yang kita buat tadi bisa berjalan, maka sekarang kita akan mencoba menginsertkan data pada tabel Pembelian.

INSERT INTO Pembelian

(ID_Pembeli,ID_Barang,Tanggal_Beli,Nama_Pembeli, Jumlah_Pembelian)

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 64

Gambar 8.8 Message Trigger.

Pada saat menuliskan queri diatas maka akan terlihat message dibagian bawah seperti gambar diatas yang artinya ketika kita menuliskan queri diatas maka secara otomatis akan menginsertkan data sekaligus kedalam tabel Pembelian dan tabel Barang.

Anda akan melihat hasil pada tabel Pembelian dan tabel Barang seperti gambar dibawah ini.

Gambar 8.9 Hasil dari proses Insert trigger tabel pembelian.

Gambar 8.10 Hasil dari proses Insert trigger tabel barang.

Pada gambar diatas terlihat nilai pada Stok_Barang sudah terisi sesuai dengan jumlah pembelian yang dimasukkan pada queri Insert tabel Pembelian diatas.

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 65

TUGAS

1. Buatlah sebuah stored procedure pada database “Mahasiswa” yang anda buat untuk menampilkan semua data mahsiswa berdasarkan ketua jurusannya!

2. Buatlah stored procedure yang akan mencari nama ketua jurusan dengan nama tertentu! 3. Buatlah sebuah trigger pada database “Mahasiswa”!

Modul Praktikum Sistem Basis Data

Program Studi Sistem Komputer 66

DAFTAR PUSTAKA

HS,Octaviani. 2010, SQL Server 2008 Express, Penerbit Andi, Yogyakarta

Alam.J, M. Agus. 2005, Pemrograman Transact-SQL pada SQL Server 2005, Elexmedia Komputindo, Bandung;

Kadir, Abdul. 2002. Penuntun Praktis Belajar SQL, Penerbit Andi Yogyakarta. http: // www.w3school.com

Dokumen terkait