7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 1/31
Computer Science, University of Brawijaya
Putra Pandu Adikara, S.Kom
Stored Procedure
Basis Data 2
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 2/31
Stored Procedure
Stored procedure program yang disimpan dalam
database dan dikompilasi bila digunakan Dalam Oracle, dapat ditulis dalam PL / SQL atau Java
Dalam SQL Server, dapat ditulis dalam Transact-SQL atau L!
Stored Procedure yang disimpan dapat menerima
parameter input dan dapat mengembalikan "asil
Stored Procedure yang disimpan dapat dipanggil dari Program yang ditulis dalam ba"asa standar, misalnya# Java, $
Scripting ba"asa, misalnya# JavaScript, %&Script
SQL command prompt, misalnya# s'lcmd, SQL Plus, Query
(naly)er
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 3/31
Stored Procedure vs Procedure
Persamaan dengan prosedur dlm pemrograman#
*enerima parameter input dan mengembalikan beberapa
nilai dalam bentuk parameter output ke pemanggil
prosedure atau batc"+
&erisi statement pemrograman utk operasi dlm database,
termasuk memanggil prosedur lainnya+
*engembali nilai status ke pemanggil prosedur atau batc"
untuk menunukkan keber"asilan atau kegagalan dan
alasan untuk kegagalan.+
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 4/31
ipe Stored Procedure
System Stored Procedure# ama dimulai dengan sp_ atau xp_ extended stored
procedur akan di"ilangkan.
Dibuat dalam database master
Tuuannya untuk pengaplikasian dalam database apapun
Sering digunakan ole" sysadmin
Local Stored Procedure# Ditetapkan di database lokal
ama sering dimulai dengan pr_ atau usp
• Dalam prakteknya lebi" baik gunakan nama yang muda"#
–Tanpa pre0i1
–Sesuaikan dengan yang ada di aplikasi misal menggunakan
obect/komponen seperti O!*.
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 5/31
Ke!e"i#an Stored Procedure
2eamanan lebi"
stored procedure selalu tersimpan pada database server
*emberikan grant user permission utk menalankan SP
*engurangi lalu lintas aringan
SP dapat mengurangi 'uery SQL panang menadi satu
baris yang ditransmisikan se"ingga mengurangi lalu lintas
client-server+
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 6/31
Ke!e"i#an Stored Procedure
3aktu 4ksekusi lebi" cepat
&ila perlu T-SQL yang banyak dan berulang-ulang, maka
SP bisa lebi" cepat drpd batc" T-SQL code+ SP dicompile
sekali, disimpan dalam memory dan digunakan untuk
pemanggilan berikutnya tidak perlu dikompilasi ulang.+
SQL dapat dioptimasikan ole" D&*S compiler
&erbagi-pakai kode modular berimbas pada#
*engurangi pekeraan berlebi" 5 penggunaan ulang kode
secara e0isien
Standarisasi pemrosesan
Spesialisasi antara developer
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 7/31
Dasar Stored Procedure
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 8/31
$em"uat Stored Procedure
Sintaks#
CREATE PROCEDURE NamaProsedur AS
Deklarasi_Variable
.. .. ..
.. .. ..
RETURN
onto"#
CREATE PROCEDURE pr_honor ASSELECT namainstruktur, honor FROM
instruktur
RETURN
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 9/31
$enja!ankan Stored Procedure
dengan 464
EXEC pr_honor
EXEC sp_help
dengan 4647T4
EXECUTE pr_honor
EXECUTE sp_help
langsung nama prosedur
pr_honor
sp_help
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 10/31
$en%koreksi Se"ua# Prosedur
Statement (LT4! "arus digunakan
ALTER PROCEDURE pr_honor AS
select inisial, namainstruktur, honorfrom instruktur
RETURN
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 11/31
$en%#apus Stored Procedure
digunakan statement D!OP
Sintaks#
DROP PROCEDURE NamaProsedur
onto"#
DROP PROCEDURE pr_honor
DROP PROCEDURE uspHitungGaji
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 12/31
$en%u"a# Prosedur anpa $en%%unakan A&'(
ek prosedur ada, bila ada di drop, kemudian baru create
USE mydbIF EXISTS SELECT name FROM sysobje!ts
WERE nama" #pr_honor# AND type " #P#$DROP PROCEDURE pr_!o"or
#OCREATE PROCEDURE pr_!o"or
ASSELECT inisial, namainstruktur, honorFROM instruktur
#O
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 13/31
$en%u"a# Prosedur anpa $en%%unakan
A&'( ) S*& Server 2++
USE Ad%enture&orks'(()*'+
#O
IF O$%ECT_ID #Human*esour!es.uspGetAllmployees#,
#P# $ IS NOT NULL
DROP PROCEDURE Human*esour!es.uspGetAllmployees+#O
CREATE PROCEDURE Human*esour!es.uspGetAllmployees AS
SET NOCOUNT ON&
SELECT -astName, irstName, Department FROMHuman*esour!es.%mployeeDepartmentHistory+
#O
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 14/31
$en%u"a# -ama Stored Procedure
8unakan sintaks SP_RENAME
onto"#
SP_RENAME pr_honor, pr_honor'
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 16/31
Parameter
Prosedur dapat mempunyai parameter berupa variableyang disuplai ole" program yang memanggilnya
Sintaks parameter /param as datatype " default 01234123P235
onto"#
CREATE PROC pr_honor /p6 int, /p' !har67$, .. $
AS
Deklarasi_Variable
.. .. ..
.. .. ..
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 17/31
Parameter
9nput parameter
Digunakan untuk memberikan nilai dari pemanggil ke
dalam SP
onto"#
• CREATE PROC pr_honor /p6 INT$ AS 8
Output parameter
Digunakan untuk mengembalikan nilai non-recordset dari
SP ke pemanggil
• *isalnya SP untuk insert, mengembalikan nilai "asil identity
onto"#
• CREATE PROC pr_honor /p6 INT, /p'
CAR 67$,/pout6 INT OUT, /pout' CAR 6$ OUTPUT$
AS 8
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 18/31
utput Parameter
ilai parameter bisa diola" pada program prosedur dan
untuk kemudian parameter tersebut dapat diuba" dan
diberikan nilainya pada program yang memanggilnya+
CREATE PROC m
/p6 int, /p' int, /h int 123P23$
AS
S-93 /h" /p6 : /p'
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 19/31
'ksekusi utput Parameter
onto"#
DECLARE /hsl INT
EXEC m 6(, '(, /hsl OUTPUT
PRINT #hasil " # ; str /hsl$
Pada conto" ada : parameter, yaitu p; dan p< sebagai
input parameter dan " sebagai output parameter+
Saat eksekusi, p; adala" ;=, p< adala" <= dan "sl
merupakan "asil perkalian+
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 20/31
Parameter d%n Defau!t /a!ue
De0ault value 7ntuk meng"indari null karena nilai tidak diberikan
*erupakan nilai de0ault yang otomatis diberikan bila tidak
dispesi0ikasikan ketika pemanggilan SP
onto"#
CREATE PROC pr_honor /p6 INT'() (S
select nama instruktur, honor from instruktur
*!ere inisial"/iniRetur"
7rutan parameter Tempatkan parameter dengan de0ault value di ak"ir dari da0tar
parameter untuk penggunaan 0leksibel
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 21/31
'ksekusi Procedure Berparameter
Pada saat eksekusi, parameter diberikan setela" nama
SP
&erdasarkan nama#
EXEC pr_Get3opProdu!ts/Start<D " 6, /nd<D " 6(
&erdasarkan posisi#
EXEC pr_Get3opProdu!ts 6, 6(
Leveraging De0ault values
EXEC pr_Get3opProdu!ts /nd<D"6(
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 22/31
('U(- 0 '(((
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 23/31
(eturn
Digunakan untuk mengembalikan nilai "asil balik berupa
status dari eksekusi sukses atau gagal
Statement retur" uga bisa digunakan untukmeng"entikan segala eksekusi
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 24/31
'rror
>>4!!O! ?ungsi ini digunakan untuk
mengimplementasikan penanganan kode kesala"an+ &erisi 9D 4rror yang di"asilkan ole" pernyataan SQL terak"ir
yang dialankan+
>>4!!O! berisi = Sukses, selain itu gagal
onto"CREATE PROC Pro!6 /9olumnP= <N3"N2-- AS
$E#IN
INSERT INTO 3A>-6 VA-2S/9olumnP=$IF //rror ?@ (
$E#IN
PRINT #rror o!!urred#
END
END
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 25/31
$em"an%kitkan 'rror
7ntuk membangkitkan pesan kesala"an gunakan sintaks
!(9S44!!O!
onto"RAISERROR #demo error#, 6, 6$
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 27/31
$e!ewatkan -ama "ject se"a%ai Parameter
Parameter tidak dapat memuat suatu obect kecuali kita
menggunakan obect tersebut di dalam SP dengan
statement EXEC sering disebut dynamic query .
Conto#) Bad Dynamic *uery
CREATE PROC ind_data
/table %ar!har6')$$ AS
SELECT : FROM /table
#O
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 28/31
@asilnya#
4rror *essage
Ser%erB Csg 6E, -e%el 6F, State ',Pro!edure ind_data, -ine 7 Cust de!lare the
%ariable /table.
Pesan kesala"an tersebut nampak ganil karena parameter
>table tela" dide0inisikan sebagai variable
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 29/31
So!usi Pemeca#an
CREATE PROC ind_data
/table %ar!har6')$
$ AS
EXEC #sele!t : rom # ; /table$RETURN
#O
7/25/2019 05 Stored Procedure
http://slidepdf.com/reader/full/05-stored-procedure 30/31
U1AS) $US ('AD