Anda di halaman 1dari 9

STORED PROCEDURE

Stored Procedure adalah kumpulan perintah SQL yang diberi nama dan disimpan di server. Stored Procedure biasanya berisi perintah-perintah umum yang berhubungan dengan database pada server, dan menghasilkan sekumpulan record. Stored Procedure ditulis dalam bentuk sebuah script.

manfaat di store pocedure ini adalah:


1. akan memperkecil trafik request dari aplikasi ke database karena semua proses bisnis dilakukan di database mysql dan aplikasi akan menerima hasil proses saja. 2. ketika sebuah aplikasi yang didevelop terdiri dari berbagai bahasa pemrograman (misalkan desktop dan web) yang mana kedua tipe aplikasi tersebut membutuhkan hasil dan operasi database yang sama. 3. untuk meningkatkan securiti, misalkan sebuah aplikasi yang login dengan user abcd tidak dapat mengakses tabel2 tertentu secara langsung tetapi mesti melalui store procedure, dengan cara ini akan meningkatkan ke-valid-tan data

Keuntungan penggunaan Stored Procedure


Meningkatkan performance aplikasi.Sebuah Stored Procedure di simpan dan di compile di katalog database yang mana dapat dieksekusi lebih cepat di bandingkan SQL yang tidak di compile dari kode aplikasi. Mengurangi traffic antara aplikasi dan database server. Aplikasi hanya mengirim nama stored procedure untuk mengeksekusi SQL.Dapat di gunakan kembali dan transparent ke aplikasi yang ingin menggunakan nya. Aman.

Kerugian penggunaan Stored Procedure


Dapat mengakibatkan Database server membutuhkan memory dan prosessor lebih tinggi. Stored procedure hanya berisi SQL deklaratif, sehingga sangat sulit untuk menulis sebuah procedure dengan kompleksitas logika, seperti bahasa pemrograman yang di gunakan untuk memprogram aplikasi. Stored procedure tidak dapat di debug di hampir RDBMS, termasuk MySQL. Membutuhkan keahlian khusus untuk menulis dan me maintain stored procedure yang tidak setiap developer memiliki, sehingga dapat membuat ribet

fungsi lain yang digunakan dalam membuat Stored Procedure adalah: 1. Pembuatan Table.
Jika pada perintah SQL Anda mengenal pembuatan table dengan perintah CREATE TABLE, demikian pula pada Stored Procedure. Anda dapat membuat table temporer dengan menggunakan tanda # (umumnya disebut karakter kres atau tanda pagar). Contoh: CREATE TABLE #temp (no int identity, nama varchar(50)) Perintah diatas akan membuat sebuah table dengan struktur field no yang bertipe integer dan field nama yang bertipe varchar(50). Anda dapat melakukan operasi pengolahan data sebagaimana Anda melakukannya pada table yang permanen. Pada Microsoft SQL Server, tidak diperbolehkan membuat lebih dari satu perintah CREATE TABLE pada sebuah Stored Procedure yang mengacu pada table temporer yang sama. Tetapi tidak dibatasi jika Anda menggunakan table permanen.

2. Pembuatan Variable dan Parameter.


Pada Stored Procedure, Anda dapat menciptakan variable dengan tipe data yang dapat Anda tentukan. Contoh: @nama_lengkap as varchar(100) Perintah diatas adalah mendeklarasikan variable @nama lengkap dengan tipe data varchar(100). Variable ini dapat digunakan sebagai parameter yang nilainya akan dikirimkan oleh program client yang memanggil Stored Procedure tersebut.

3. Pemberian Komentar.
Sebagaimana bahasa pemrograman lain, penting bagi Anda untuk memberikan komentar atau keterangan pada bagian-bagian tertentu agar Anda maupun orang lain dapat memahami Stored Procedure tersebut.

Untuk memberi komentar pada satu baris statement, Anda dapat menggunakan karakter -(karakter minus sebanyak dua kali). Untuk memberikan komentar pada blok atau sekumpulan perintah, gunakan tanda /* (karakter garis miring diikuti karakter asterisk) sebagai awal komentar, dan tanda */ (karakter asterisk diikuti karakter garis miring) sebagai akhir komentar.

4. Pengolahan Table (Data Manipulation).


Perintah-perintah untuk melakukan operasi record pada table seperti perintah SELECT, DELETE ataupun UPDATE dapat Anda gunakan pada Stored Procedure.

5. Enkripsi.
Tidak seperti bahasa pemrograman Visual Basic atau Delphi yang merupakan compiler, pada Stored Procedure tidak dilakukan kompilasi menjadi file binary sehingga code yang Anda ketik dapat terlihat. Untuk itu, Microsoft SQL Server menyediakan perintah WITH ENCRYPTION sehingga source code Stored Procedure tidak dapat terlihat oleh pengguna. Untuk melakukan modifikasi terhadap Stored Procedure yang dienkripsi, Anda harus menciptakan ulang Stored Procedure tersebut. Karena itu pastikan Anda memiliki backup Stored Procedure yang tidak dienkripsi. Stored Procedure juga memiliki keterbatasan, Anda tidak dapat menciptakan Function, Rules, Schemas, Trigger ataupun View pada Stored Procedure.

Membuat Stored Procedure


CREATE PROC AS

Contoh membuat proc barang dengan menampilkan semua data pada table product di database nortwind CREATE PROC BARANG AS SELECT * FROM Products

Merubah Procedure
ALTER PROC AS

Merubah proc yang sudah kita buat, contoh kita mengubah proc barang yang kita buat tadi, yang pertamanya menampilkan semua product menjadi hanya menampilkan product dimana supplier id=3 ALTER PROC BARANG AS SELECT * FROM Products WHERE SupplierID = 3

Menjalankan Procedure
Execute atau Exec untuk menjalankan procedur barang yang sudah kita buat tadi EXEC BARANG atau atau EXECUTE BARANG

Menghapus Procedure
Drop Procedure contoh menghapus proc barang yang kita buat tadi DROP PROCEDURE BARANG

Stored Procedure dengan Parameter


Parameter berfungsi sebagai passing variable antara stored procedure dengan pemanggilnya. Contoh 1: disini kita memanggil data product dimana productId=@kode, dan saat menjalankan kita masukkan paramete @kodenya = 2. create proc data_brg(@kode int) as select * from Products where ProductID = @kode exec data_brg '2' Contoh 2: dengan 2 parameter create proc data_brg2 @cat int, @stock int as select * from Products where CategoryID = @cat where CategoryID = @cat and UnitsInStock < @stock exec data_brg2 @cat='2', @stock='5' execute data_brg2 '2', '5'

Parameter Output
Mengindikasikan bahwa parameter berupa return parameter. Nilai parameter dpt diubah dan diberikan nilainya pada program pemanggilnya. nilainya pada program pemanggilnya. Contoh1: create proc lihat_brg (@kode varchar(5), @nama varchar(30) output, @stock decimal output, @hrgj decimal output) AS select @nama=ProductName, @stock=UnitsInStock, @hrgj=UnitPrice From Products where ProductID = @kode Untuk menjalankan, variabel pada program yg memanggil harus dideklarasikan dan saat dieksekusi diikuti kata output Declare @nm varchar(50), @jml decimal, @hargaj decimal Execute lihat_brg '1', @nm output, @jml output, @hargaj output Print 'Nama Brg : ' + @nm Print 'Stock : ' + str(@jml) Print 'Stock : ' + str(@jml) Print 'Harga Jual : ' + str(@hargaj) Print 'Total Harga : ' + str(@jml * @hargaj) Procedur di buat di query analyzer, tapi kalau mau cepat bisa malalui enterprise manager

User Defined Function


User Defined Function (UDF) merupakan program yang ditulis user untuk memperkayafungsionalitas database manager dengan menambahkan fungsi-fungsi baru dalamkumpulan built-in function.UDF secara fungsi tidak sekuat stored procedure karena UDF memiliki batasan-batasanyang tidak bisa menggantikan fungsi stored procedure. Namun UDF juga memilikibeberapa keuntungan : 1. Dieksekusi dalam perintah SELECT 2. Dieksekusi dari berbagai bagian perintah SQL ( WHERE/HAVING,CASE ) 3. Output UDF (table functions) dapat digunakan sebagai Rowset dalam perintah FROM 4. Dapat digunakan seperti view yang berparameter

Pembuatan User Defined Function A. CREATE UDF


Berdasarkan nilai kembaliannya (return value) ada 2 tipe UDF yaitu scalar dan table.Berikut ini diberikan contoh sederhana untuk membuat UDF. Contoh create fungsi scalar : CREATE FUNCTION FUNCTION1 ( ) RETURNS INTEGER NO EXTERNAL ACTION F1: BEGIN ATOMIC RETURN SELECT COUNT(*) FROM SYSIBM.SYSTABLES; END Contoh create fungsi table: CREATE FUNCTION FUNCTION2 ( ) RETURNS TABLE(TABNAME VARCHAR(128)) NO EXTERNAL ACTION F1: BEGIN ATOMIC RETURN SELECT LASTNAME FROM EMPLOYEE; END

B. MODIFYING UDF
Dalam bahasa SQL DB2 tidak ada perintah ALTER untuk memodifikasi sebuah UDF.Ketika perlu melakukan perubahan fungsi yang telah ada maka fungsi tersebut harus didrop dulu dan di create ulang.

C. DROPPING UDF
Contoh menghapus fungsi berdasarkan nama fungsi: DROP FUNCTION function1; Jika terdapat 2 fungsi yang memiliki nama yang sama tetapi dengan parameter berbeda(disebut function overloading) maka cara penghapusannya berdasarkan nama fungsidan parameternya. Contohnya sebagai berikut : DROP FUNCTION function1(int);

Scalar Function
Fungsi scalar mengembalikan nilai tunggal (single value). Fungsi scalar tidak bisamenggunakan query yang dapat merubah kondisi database, seperti query INSERT, UPDATEdan DELETE. Contoh fungsi scalar yang telah built-in adalah SUM(), AVG(), DIGITS(),COALESCE(), dan SUBSTR(). Ada 2 cara memanggil Fungsi Scalar. Cara pertama adalah dengan menggunakan fungsitersebut dalam perintah SELECT. Cara kedua adalah dengan menggunakan VALUES. Berikutini ditunjukkan contoh pemanggilan fungsi scalar. SELECT PROJNO, PROJNAME, DEPTNO, RESPEMP, COALESCE(MAJPROJ, 'tidak ada') FROM DB2ADMIN.PROJECT; VALUES projname('AD3100'); Contoh kasus penggunaan UDF dalam database sample schema. Cristine Haas ingin mengetahui jumlah pegawai yang terlibat dalam sebuah project. Iaingin ketika input nama project menghasilkan keluaran banyaknya pegawai yangmenangani project tersebut. Maka untuk memudahkan business logic yang akan diaksesCristine Haas dibuatkan sebuah UDF. (menggunakan IBM Data Studio) CREATE FUNCTION jmlpeg_proj (namaproject varchar(24)) RETURNS INTEGER NO EXTERNAL ACTION F1: BEGIN ATOMIC RETURN SELECT COUNT(e.empno)fromempprojact ejoinprojectp on(p.projno = e.projno)where p.projname =upper(namaproject); END; VALUESjmlpeg_proj('account programming');

Table Function
User defined table function (UDTF) atau table UDF adalah fungsi yang mengembalikansejumlah baris dalam sebuah tabel (temporary table). Fungsi ini dapat dipanggilmenggunakan clausa FROM dalam query. Fungsi tabel bisa menggunakan query yang dapatmerubah kondisi database, seperti query INSERT, UPDATE dan DELETE. Contoh fungsi tabelyang telah built-in adalah SNAPSHOT_DYN_SQL() dan MQREADALL(). Contoh kasus penggunaan UDTF dalam database sample schema. Seorang web programmer membutuhkan fungsi tabel untuk menampilkan datapegawai-pegawai (no pegawai, nama pegawai [lastname digabung firstname], totalpendapatan, workdept ) yang bekerja pada departemen tertentu (nama departemensesuai input pilihan user). Untuk memenuhi kebutuhan web programmer dibuatlah fungsi tabel kasus1. (menggunakan IBM Data Studio) CREATE FUNCTIONkasus1 (namadeptvarchar(36)) RETURNS TABLE(empnochar(6) , namavarchar(28), pendapatan decimal(9) , workdeptchar(3)) NO EXTERNAL ACTION F1:BEGIN ATOMIC RETURN SELECTe.empno, e.lastname ||' '|| e.firstnme as nama, (e.salary+e.bonus+e.comm)aspendapatan , e.workdept FROM employee e join department don(e.workdept=d.deptno) WHEREd.deptname =UPPER(namadept); END@ SELECT*FROM TABLE(kasus1('information center'))@

Trigger
Trigger adalah blok PL/SQL yang disimpan dalam database dan dijalankansecara implisit sebagai respon terhadap perubahan yang telah ditentukandalam database.Perintah DML seperti INSERT, UPDATE, dan DELETE adalah pemicu umumterjadinya trigger. Operasi DDL seperti ALTER dan DROP juga dapatmemicu dijalankannya trigger Fungsi dan Kelebihan Fungsi dan kelebihan penggunaan trigger antara lain: - Memperbaiki integritas data - Memvalidasi transaksi data. - Memperbaiki keamanan database dengan menyediakan audit yang lebih kompleks mengenai informasi perubahan database dan usersiapa yang melakukan perubahan.

Membuat TRIGGER
Klausa FOR memiliki default untuk klausa AFTER. Sql_statement merupakan Transact-SQL, bisa ada definisi variable, query, control-of-flow (IF, ELSE, WHILE, BEGIN END). CREATE TRIGGER [nama_trigger] ON [table atau view] { FOR | AFTER | INSTEAD OF } { [DELETE] [,] [INSERT] [,] [UPDATE] } AS [sql_statement]

Anda mungkin juga menyukai