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.
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.
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.
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.
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
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
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]