Dinda Ayu Subagio's Blog

Selamat Datang :)

Pemahaman tentang Stored Procedure, Function dan Trigger

Posted Selasa, 20 September 2011 by bahagia bersama dinda :)

  Nim / Nama : 10.41010.0250 / Dinda Ayu Dwi Agustina

Stored Procedure

Definisi

Stored procedure adalah prosedur (spt subprogram dalam bhs pemrograman) yang disimpan di dalam database.
MySQL mendukung dua jenis “rutin” (subprogram):
  • stored procedure yang dapat dipanggil,
  • fungsi yang menghasilkan nilai yang dapat dipakai dalam statemen SQL lain.

Contoh
Statemen yang menciptakan strored procedure

CREATE PROCEDURE procedure1               /* nama */
(IN parameter1 INTEGER)                   /* parameter */
BEGIN                                     /* awal blok */
  DECLARE variable1 CHAR(10);             /* variabel */
  IF parameter1 = 17 THEN                 /* awal IF */
   SET variable1 = 'burung';              /* assignment */
  ELSE
   SET variable1 = 'kelelawar';           /* assignment */
  END IF;                                 /* akhir IF */
  INSERT INTO table1 VALUES (variable1);  /* statement */
END                                       /* akhir blok  */


Mengapa Strored Procedure

Dengan stored procedure eksekusi menjadi cepat. Tidak ada kompilasi. Peningkatan kecepatan datang dari reduksi lalu-lintas jaringan. Jika ada pekerjaan pengecekan berulang, looping, multiple statement, dikerjakan dengan pemanggilan tunggal ke prosedur yang telah disimpan ke server.

Stored procedure adalah komponen. Andaikan aplikasi kemudian ditulis dalam bahasa berbeda, tidak ada masalah, karena logika berada didalam database bukan dalam aplikasi.


Function
User Defined Function User define fuction merupakan fasilitas baru yang disediakan oleh Microsoft SQL Server 2000, dan fasilitas ini belum ada pada SQL Server versi sebelumnya.

User define function merupakan subroutine yang digunakan untuk membuat transact-SQL, dimana kode user define function tersebut berbentuk encapsulation code, dan kode tersebut dapat digunakan digunakan untuk membangun transact-SQL lain (reusable). User define function ini berfungsi hampir sama dengan stored procedure. Perbedaannya adalah jika stored procedure tidak bisa digunakan untuk menyimpan hasil proses, sedangkan pada user define function hasil dari proses dapat dikembalikan berupa sebuah nilai atau table. Jika anda sudah familiar dengan bahasa pemrograman Visual Basic, maka perbedaan user define function dan stored procedure mirip seperti perbedaan antara Function dan Sub.

User define function dibuat dengan perintah CREATE FUNCTION, dimodifikasi dengan ALTER FUNCTION atau di hapus dengan perintah DROP FUNCTION.

Tipe User Define Function
User define function dalam SQL Server 2000 terbagi menjadi dua tipe yaitu:
1. Scalar function
2 Table valued function

Scalar Function
Scalar function adalah sebuah user define function yang mengembalikan sebuah nilai dengan satu tipe data scalar. Semua tipe data yang ada pada SQL Server 2000 dapat digunakan untuk menampung hasil pengembalian proses, kecuali tipe data text, ntext, image, timestamp dan cursor. Bagian dari function ini harus berada dalam blok BEGIN…END. Berikut ini contoh membuat scalar function yang mengembalikan nilai dengan tipe data decimal

CREATE FUNCTION [ owner_name. ] function_name
( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] )
RETURNS scalar_return_data_type
[ WITH < function_option> [ [,] ...n] ]
[ AS ]
BEGIN
function_body
RETURN scalar_expression
END

Contoh scalar function :

CREATE FUNCTION CubicVolume
-- Input dimensions in centimeters
(@CubeLength decimal(4,1), @CubeWidth decimal(4,1),
@CubeHeight decimal(4,1) )
RETURNS decimal(12,3) -- Cubic Centimeters.
AS
BEGIN
RETURN ( @CubeLength * @CubeWidth * @CubeHeight )
END


Table Value Function
Jika Scalar function dapat mengembalikan sebuah nilai dengan tipe data tertentu, maka table value function dapat mengembalikan nilai berupa table. Table valued function ini dibedakan menjadi dua jenis yaitu Inline table valued function dan multistatement table valued function. Inline valued function dapat digunakan jika hasil yang akan dikembalikan merupakan hasil dari perintah SELECT. Bagian dari deklarasi inline function tidak didalam blok BEGIN…END. Fungsi Inline table valued function ini mirip seperti view, perbedaanya adalah jika pada view tidak bisa menggunakan parameter, sedangkan pada function diijinkan mengggunaan parameter.
CREATE FUNCTION [dbo].[test] ( @X INT, @Y INT )
RETURNS INT
AS
BEGIN
RETURN @X + @Y
END
GO

Jalankan script diatas, dan kalo berhasil akan muncul pesan : Command(s) completed successfully, dan hasilnya dapat dilihat di dalam folder Programmability –> Functions –> Scalar-valued Functions.
Untuk menjalankannya, tinggal memanggil fungsi tersebut dengan paramater-parameter yang dikirim :
USE [tempdb]
GO
Select dbo.test(4,5) as Hasil
dan hasilnya akan seperti ini :



Trigger
 
Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.

Tipe dari trigger adalah :

· Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi

· Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database.

Trigger perlu dibuat pada saat :

· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global

Trigger tidak perlu dibuat, jika :

· Fungsionalitas yang diperlukan suatu ada pada Oracle server
· Duplikat atau sama dengan fungsi trigger yang lain.

Sintak penulisan dari database trigger, berisi komponen berikut :

1. Trigger timing :
a. Untuk tabel : BEFORE, AFTER
b. Untuk view : INSTEAD OF
2. Trigger event : INSERT, UPDATE atau DELETE
3. Nama tabel : yaitu nama tabel atau view yang berhubungan dengan trigger
4. Tipe trigger : Baris atau Pernyataan (statement)
5. klausa WHEN : untuk kondisi pembatasan
6. trigger body : bagian prosedur yang dituliskan pada trigger

Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga macam trigger timing, yaitu :

· BEFORE : trigger dijalankan sebelum DML event pada tabel
· AFTER : trigger dijalankan setelah DML event pada tabel
· INSTEAD OF : trigger dijalankan pada sebuah view.

Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE.
Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ... ). Jika tidak ditentukan, maka perubahannya akan berlaku untuk semua kolom pada semua baris.

Tipe trigger ada 2 macam, yaitu :

· Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi.

· Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.

Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.





  1. kenapa ga bisa di copy dinda ..

Poskan Komentar

Shoutmix