Anda di halaman 1dari 5

Stored Procedure

Definisi

Stored procedure adalah prosedur (spt subprogram dalam bhs


pemrograman) yang disimpan di dalam database.
MySQL mendukung dua jenis “rutin” (subprogram):
 stored procedure yang dapat dipanggil,
 fungsi yang menghasilkan nilai yang dapat dipakai dalam statemen
SQL lain.

Contoh
Statemen yang menciptakan strored procedure

CREATE PROCEDURE procedure1 /* nama */


(IN parameter1 INTEGER) /* parameter */
BEGIN /* awal blok */
DECLARE variable1 CHAR(10); /* variabel */
IF parameter1 = 17 THEN /* awal IF */
SET variable1 = 'burung'; /* assignment */
ELSE
SET variable1 = 'kelelawar'; /* assignment */
END IF; /* akhir IF */
INSERT INTO table1 VALUES (variable1); /* statement */
END /* akhir blok */

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.

Memulai klien MySQL

Cek versi:
SHOW VARIABLES LIKE 'version';
atau

SELECT VERSION();

Hasilnya:
mysql> SHOW VARIABLES LIKE 'version';
+---------------+-------------------------+
| Variable_name | Value |
+---------------+-------------------------+
| version | 5.0.22-community-max-nt |
+---------------+-------------------------+
1 row in set (0.01 sec)

mysql> select version();


+-------------------------+
| version() |
+-------------------------+
| 5.0.22-community-max-nt |
+-------------------------+
1 row in set (0.08 sec)

Jika kita melihat bilangan ‘5.0.x’, berarti strored procedure akan bekerja.

Contoh database

Menggunakan database dbjual:


USE dbjual;

mysql> select * from barang;


+------+--------------------+-------+--------+--------+
| kode | nama | jenis | harga | jumlah |
+------+--------------------+-------+--------+--------+
| 001 | Coca cola | F | 7500 | 20 |
| 002 | Mi Sedap rasa Soto | A | 800 | 24 |
| 003 | Kecap ABC | A | 2500 | 20 |
| 004 | Kaos oblong | B | 15000 | 5 |
| 005 | VCD player | C | 235000 | 1 |
| 008 | Ballpoint | D | 2500 | 15 |
| 010 | Celana Jeans | B | 65000 | 5 |
| 011 | Buku Gambar | D | 2000 | 12 |
| 012 | Jaket | B | 50000 | 6 |
+------+--------------------+-------+--------+--------+
9 rows in set (0.09 sec)
Memilih delimiter
mysql> DELIMITER //

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.

Menciptakan stored procedure


CREATE PROCEDURE p1 () SELECT * FROM barang; //

p1 = nama prosedur
() = daftar parameter
SELECT * FROM barang; = bodi prosedur

Mengembalikan delimiter:
delimiter ;

Memanggil stored procedure


mysql> call p1();
+------+--------------------+-------+--------+--------+
| kode | nama | jenis | harga | jumlah |
+------+--------------------+-------+--------+--------+
| 001 | Coca cola | F | 7500 | 20 |
| 002 | Mi Sedap rasa Soto | A | 800 | 24 |
| 003 | Kecap ABC | A | 2500 | 20 |
| 004 | Kaos oblong | B | 15000 | 5 |
| 005 | VCD player | C | 235000 | 1 |
| 008 | Ballpoint | D | 2500 | 15 |
| 010 | Celana Jeans | B | 65000 | 5 |
| 011 | Buku Gambar | D | 2000 | 12 |
| 012 | Jaket | B | 50000 | 6 |
+------+--------------------+-------+--------+--------+
9 rows in set (0.36 sec)

menghapus procedure
mysql> drop procedure p1;

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

Contoh IN
mysql> CREATE PROCEDURE p5(p INT) SET @x = p //
Query OK, 0 rows affected (0.00 sec)
mysql> CALL p5(12345)//
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @x//
+-------+
| @x |
+-------+
| 12345 |
+-------+
1 row in set (0.00 sec)

Contoh OUT
mysql> CREATE PROCEDURE p6 (OUT p INT)
-> SET p = -5 //
mysql> CALL p6(@y)//
mysql> SELECT @y//
+------+
| @y |
+------+
| -5 |
+------+

p adalah nama parameter output. Saat pemanggilan, variabel sesi @y


dilewatkan.
Dalam bodi prosedur, parameter diisi dengan -5.
Efeknya sama dengan statemen “SET @y = -5;”.

Gabungan statemen
diapit dengan blok begin ... end

CREATE 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; //

Anda mungkin juga menyukai

  • Switch Spoofing Attack
    Switch Spoofing Attack
    Dokumen5 halaman
    Switch Spoofing Attack
    Franky Silalahi
    Belum ada peringkat
  • Pemba Has An
    Pemba Has An
    Dokumen4 halaman
    Pemba Has An
    Franky Silalahi
    Belum ada peringkat
  • Usb
    Usb
    Dokumen20 halaman
    Usb
    Franky Silalahi
    Belum ada peringkat
  • YII-2MODEL
    YII-2MODEL
    Dokumen7 halaman
    YII-2MODEL
    Franky Silalahi
    Belum ada peringkat
  • PC
    PC
    Dokumen1 halaman
    PC
    Franky Silalahi
    Belum ada peringkat
  • Membuat SMS Gateway Auto Reply
    Membuat SMS Gateway Auto Reply
    Dokumen4 halaman
    Membuat SMS Gateway Auto Reply
    Franky Silalahi
    Belum ada peringkat
  • PC
    PC
    Dokumen1 halaman
    PC
    Franky Silalahi
    Belum ada peringkat
  • Yii Framework
    Yii Framework
    Dokumen14 halaman
    Yii Framework
    Franky Silalahi
    100% (1)
  • Soal Virus Komputer
    Soal Virus Komputer
    Dokumen1 halaman
    Soal Virus Komputer
    Franky Silalahi
    100% (1)
  • MG 04 2 ADT Point
    MG 04 2 ADT Point
    Dokumen2 halaman
    MG 04 2 ADT Point
    Franky Silalahi
    Belum ada peringkat
  • Tugas I
    Tugas I
    Dokumen1 halaman
    Tugas I
    Franky Silalahi
    Belum ada peringkat
  • STRUKDATA
    STRUKDATA
    Dokumen6 halaman
    STRUKDATA
    Muhammad Zaky
    Belum ada peringkat
  • Windows Server 2003
    Windows Server 2003
    Dokumen2 halaman
    Windows Server 2003
    Franky Silalahi
    Belum ada peringkat