0% menganggap dokumen ini bermanfaat (0 suara)
33 tayangan21 halaman

Stored Procedure

Diunggah oleh

harts.toys
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
33 tayangan21 halaman

Stored Procedure

Diunggah oleh

harts.toys
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 21

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.
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
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)
Jika kita melihat bilangan ‘5.0.x’, berarti strored procedure akan
bekerja.
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
Contoh OUT
mysql> CREATE PROCEDURE p6 (OUT p INT)
-> SET p = -5 //
mysql> CALL p6(@y)//
mysql> SELECT @y//
+------+
| @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; //
Trigers
CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER
trigger_name trigger_time trigger_event ON tbl_name
FOR EACH ROW trigger_stmt

Keterangan
DEFINER menunjukkan nama user yang mempunyai hak akses untuk
mengakses triger.
Triger_time menunjukkan saat triger tersebut dijalankan. Terdiri dari Before atau
After
Triger_event menandakan saat keadaan bagaimana triger tersebut aktif. Terdiri
dari :
Insert : Triger aktif saat baris baru dimasukkan ke dalam tabel
Update : Triger aktif saat ada baris diperbaharui dimasukkan di dalam tabel
Delete :Triger aktif saat baris dihapus dalam tabel
Contoh
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL
AUTO_INCREMENT PRIMARY KEY);

CREATE TABLE test4( a4 INT NOT NULL


AUTO_INCREMENT PRIMARY KEY, b4 INT
DEFAULT 0 );
Triger
DELIMITER |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 =
NEW.a1;
END; |
DELIMITER ;
Test
mysql> INSERT INTO test1 VALUES ->
(1), (3), (1), (7), (1), (8), (4),
(4);
Query OK, 8 rows affected (0.01 sec)
Records: 8 Duplicates: 0 Warnings: 0
Lihat Hasil

Anda mungkin juga menyukai