05 stored procedure

31
Computer Science, University of Brawijaya Putra Pandu Adikara, S.Kom Stored Procedure Basis Data 2

Upload: yayatsupriady

Post on 24-Feb-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

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 15/31

Parameter 

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 26/31

Studi Kasus

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

7/25/2019 05 Stored Procedure

http://slidepdf.com/reader/full/05-stored-procedure 31/31

3S*&

%(!9(&L4

8lobal %ariable, Local %ariable

Declaration

 (ssignment

P!O8!(**98 ST!7T7!4 T-SQL

9? T@4, (S4 3@4

3@9L4, OT974, &!4(2

T!AB(T@