laporan 7-stored procedure

19
LAPORAN PRAKTIKUM BASIS DATA MODUL VII STORED PROCEDURE Dilaksanakan tanggal 7 November 2009 Asisten Praktikum M. Ja’far S. KELOMPOK 1: 1. RETNO INDAH R (208533414723/OFF.B) 2. HARWI PENDA H. (208533414717/OFF.B) JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS NEGERI MALANG

Upload: retno-indah-r

Post on 30-Sep-2015

614 views

Category:

Documents


24 download

DESCRIPTION

Laporan 7-Stored Procedure

TRANSCRIPT

Judul tugas

LAPORAN

PRAKTIKUM BASIS DATA

MODUL VIISTORED PROCEDUREDilaksanakan tanggal 7 November 2009

Asisten Praktikum

M. Jafar S.

KELOMPOK 1:

1. RETNO INDAH R (208533414723/OFF.B)

2. HARWI PENDA H. (208533414717/OFF.B)

JURUSAN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS NEGERI MALANG

November, 2009STORED PROCEDUREA. TUJUAN

1. Memahami konsep dasar stored procedure, kelebihan dan kekurangannya.

2. Memahami implementasi stored procedure di dalam basis data.

3. Mampu menyelesaikan operasi-operasi data spesifik dengan memanfaatkan stored procedure.B. DASAR TEORI

1. Stored Procedure Stored procedure adalah prosedur (seperti subprogram dalam bahasa pemrograman) yang disimpan di dalam database.

MySQL mendukung dua jenis rutin (subprogram):

a. stored procedure yang dapat dipanggil,

b. fungsi yang menghasilkan nilai yang dapat dipakai dalam statemen SQL lain.

Dengan adanya Stored Procedure, maka program SQL :

dapat digunakan kapanpun

lebih cepat dan efisien karena bersifat Server Side

mudah dibuat dan dirawat karena kecil tapi Power Full

Dapat digunakan kapanpun Seperti halnya pembuatan prosedur pada C++ / Pascal / Java atau pemrograman yang lain, apabila pembuatan program bersifat modular (dibuat kecil untuk setiap maksud/tujuan), akan lebih baik apabila pemrograman tesebut menggunakan banyak prosedur. Dengan dibuat terpisah, kapanpun diinginkan, hanya tinggal memanggil program tersebut.

Lebih cepat dan efisien Untuk program yang besar, pembuatan program Server Side, terasa lebih mudah dibandingkan Client Side. Dengan Server Side, program lebih bersifat Netral terhadap semua aplikasi. Disisi Programer, ia tidak perlu mengetahui terlalu mendalam terhadap suatu program aplikasi seperti VB, Delphi, Java , C++ Builder, PHP, ASP, J2ME, WAP, SMS dsb. karena tugastugas tersebut sebenarnya dapat dilakukan oleh Server (dalam hal ini SQL Server) VB, Delphi, Java , C++ Builder PHP, ASP, J2ME, WAP, SMS dsb tersebut hanyalah User interface/tampilan belaka, yang hanya berfungsi untuk menampilkan data, memasukkan data, serta memberikan parameter-parameter yang dibutuhkan oleh server untuk menghapus , mengubah, skeduling, backup dan sebagainya. Sedangkan program yang sesungguhnya berada pada Server tersebut.

Stored procedure adalah sebuah prosedur (layaknya subprogram (subrutin) di dalam bahasa pemrograman regular) yang tersimpan di dalam katalog basis data. Seperti halnya fungsi tersimpan juga digunakan untuk meringkas perintah SQL, namun dalam prosedur tersimpan dapat diringkas beberapa statement atau perintah SQL. Stored procedure (prosedur tersimpan) tidak harus mengembalikan nilai seperti yang terjadi pada function procedure. Beberapa kelebihan yang ditawarkan stored procedure antara lain:

a. meningkatkan performa

b. mereduksi trafik jaringan

c. reusable, dan

d. meningkatkan kontrol sekuriti.

Di balik kelebihan-kelebihannya, stored procedure juga memiliki

kekurangan, di antaranya:a. berpotensi meningkatkan beban server

b. penulisannya tidak mudah (memerlukan pengetahuan spesifik).

Sintaks stored procedure diperlihatkan sebagai berikut:CREATE PROCEDURE sp_name ([proc_parameter[,...]])

[characteristic ...] routine_body

Untuk memanggil stored procedure, digunakan perintah CALL(beberapa

DBMS ada yang menggunakan EXECUTE).CALL sp_name

Dalam implementasi nyata, penggunaan stored procedure seringmelibatkan parameter. Di MySQL, parameter stored procedure dibedakan menjadi tiga mode: IN, OUT, dan INOUT.a. IN (Passing by Value)Parameter yang merupakan mode default ini mengindikasikan bahwa sebuah parameter dapat di-pass ke stored procedure tetapi nilainya tidak dapat diubah (dari dalam stored procedure). Variabel parameter hanya dapat digunakan untuk menerima input.b. OUT (Passing by Reference)Mode ini mengindikasikan bahwa stored procedure dapat mengubah parameter dan mengirimkan kembali ke program pemanggil. Mode ini menandakan bahwa variabel parameter hanya dapat digunakan untuk menyimpan hasil output.c. INOUT

Mode ini pada dasarnya merupakan kombinasi dari mode IN dan mode OUT. Variabel parameter dapat menerima input dan juga dapat digunakan untuk menyimpan hasil output.Sintaks pendefinisian parameter diperlihatkan sebagai berikut: MODE param_nama param_type(param size)

Stored Procedure dapat mencerminkan beragam operasi data, misalnya seleksi, penambahan, pengubahan, penghapusan, dan juga operasi-operasi DDL.

Seperti halnya prosedur di bahasa pemrograman, stored procedure juga dapat melibatkan variabel, pernyataan kondisisonal, dan pengulangan. 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.

Stored procedure adalah portable. Stored procedure ditulis dalam SQL, Anda bisa jalankan pada setiap platform dimana MySQL dijalankan disitu.Delimiter adalah karakter atau string yang memberi tahu MySQL bahwa kita telah selesai menulis statemen SQL. Sebelumnya, delimiter selalu semicolon (tanda ;). Hal ini diperlukan karena stored procedure terdiri atas sejumlah statemen, dan setiap statemen harus diakhiri dengan semicolon.Parameter

1. Tanpa parameter

CREATE PROCEDURE p5

() ...

2. Satu parameter input

CREATE PROCEDURE p5

([IN] nama tipe-data) ...

3. Satu parameter output

CREATE PROCEDURE p5

(OUT nama tipe-data) ...

4. Satu parameter untuk input dan output

CREATE PROCEDURE p5

(INOUT nama tipe-data) ...

Gabungan Statemen

diapit dengan blok begin ... endCREATE PROCEDURE p7 ()

BEGIN

SET @a = 2;

SET @b = 10;

SELECT nama, @a * jumlah FROM barang WHERE jumlah >= @b;

END; //

Variabel

dideklarasikan dengan statemen DECLARE

CREATE PROCEDURE p8 ()

BEGIN

DECLARE a INT;

DECLARE b INT;

SET a = 2;

SET b = 10;

SELECT nama, a * jumlah FROM barang WHERE jumlah >= b;

END; //

a. LatihanDELIMITER //

CREATE PROCEDURE getMahasiswa()

BEGIN

/* Ini baris komentar */

SELECT * FROM mahasiswa;

END //

DELIMITER ;

1) Stored Procedure

Dalam stored procedure juga menggunakan perintah CREATE untuk menciptakan stored procedure.

Sebelum membuat sebuah stored procedure, kita harus mengganti karakter pemroses terlebih dahulu atau yang disebut juga dengan DELIMITER. Karakter delimiter adalah sebuah karakter yang dipergunakan pada MySQL untuk memproses perintah ketika menemui karakter pemroses (titik koma ; sebagai default). Hal ini bertujuan agar MySQL tidak segera memproses perintah ketika menemui ; tetapi akan memproses perintah ketika menemui karakter lain yang dipergunakan. Hal ini disebabkan dalam pembuatan stored procedure sering mempergunakan karakter ; (titik koma). Untuk mengganti karakter yang dipakai sebagai delimiter dipergunakan perintah DELIMITER, pada praktikum kali ini karakter // (double slash) digunakan sebagai karakter delimiter.

Pernyataan di antara BEGINdan ENDmerupakan badan (body) stored

procedure. Perintah DELIMITERdi akhir baris digunakan untuk mengembalikan

delimiter ke karakter semula.

Cara mengeksekusi script dari pembuatan stored procedure.

2) Parameter IN

VARIABEL

PENAMBAHAN DATA

3) Parameter OUT

4) Parameter INOUT

5) Percabangan dan Pengulangan

C. HASIL DAN PEMBAHASAN *1. Definisikan stored procedure untuk mendapatkan banyaknya matakuliah dan jumlah total sks dengan melibatkan dua buah parameter OUT. (point 20)

2. Definisikan stored procedure untuk penambahan data ambil_mk.

Skenarionya, penambahan dapat dilakukan jika dan hanya jika nilai nim

eksis di tabel mahasiswa dan nilai kode_mk eksis di tabel matakuliah.

Apabila operasi berhasil, kembalikan status OK; sebaliknya jika gagal, kembalikan pesan Operasi Gagal. ( Point: 40)

3. Definisikan stored procedure untuk memodifikasi data dosen apabila

eksis dan melakukan penambahan jika belum eksis. Jadi, masukan dari

argumen dapat digunakan untuk penambahan ataupun modifikasi data.

(Point: 50)

D. KESIMPULAN E. DAFTAR PUSTAKA

Amri, Choirul. 2003. TUTORIAL SQL. (sumber : http://www.choirulamri.or.id). Di akses on-line tanggal 27 Oktober 2009. Kadir, Abdul. 2002. PENUNTUN PRAKTIS BELAJAR SQL. Yogyakarta : ANDI

Priyanto, Rahmat. 2007. BELAJAR SENDIRI MENGUASAI MySQL. Jakarta : ELEX MEDIA KOMPUTINDO

Tabel jurusan sebelum mengalami penambahan data.

Tampilan tabel jurusan setelah perintah CALL addJurusan(TG, Teknik Geodesi,9);

Mengeksekusi procedure addJurusan.sql

Stored procedure untuk menambahkan data di tabel jurusan.

Body Stored Procedure

Contoh penggunaaan variabel global dan hasil pemanggilan stored procedure dengan menggunakan variabel.

Contoh penggunaaan parameter IN lebih dari satu.

Jika dalam pembuatan stored procedure mengabaikan argumen, DBMS akan merespon pesan kesalahan.

Contoh penggunaaan parameter IN dimana variabel parameter hanya dapat digunakan untuk menerima input.

Memanggil stored procedure yang telah selesai dibuat.

Script pembuatan stored procedure

Menampilkan informasi mengenai status stored procedure

Menampilkan informasi pembuatan stored procedure

Menghapus stored procedure yang telah dibuat.

Hasil pemanggilan stored procedure getMhsBySemester untuk mendapatkan semua data matakuliah di semester 3 dengan cara menspesifikasikan argumennya.

Parameter OUT analog dengan passing by reference. Dengan demikian, parameter ini nilainya bisa diubah oleh stored procedure.

Parameter INOUT dapat mengirimkan parameter ke stored procedure dan mendapatkan nilai kembalian yang baru.

Pada countBySex.sql penggunaan INOUT secara gabungan, namun perlu me-SET variabel sebelum melakukan CALL countBySex(@var);

Pada countBySex2.sql penggunaan INOUT secara terpisah, untuk melihat hasilnya cukup mengetik CALL countBySex2(L,@total); => mengakses cukup dengan menambahkan jenis_kelamin dan variabel pada argumen.

Penggunaan pernyataan-pernyataan pencabangan ataupun pengulangan di

dalam stored procedure merupakan tindakan yang legal. Dengan

demikian, kita bisa menghasilkan suatu prosedur yang kompleks.

Pernyataan Do While (perulangan)

Pernyataan IF