Breaking News

Procedure

Procedure

  • Membuat procedure
  • Parameter dalam procedure
  • Parameter IN
  • Parameter OUT
  • Parameter INOUTMelihat procedure yang telah dibuat
  • Menghapus procedure

Procedure dapat berisi statement SQL (INSERT, UPDATE, DELETE, SELECT) atau operasi lain yang disimpan dalam database. Sebuah procedure dapat dipanggil menggunakan statement CALL nama_procedure disertai parameter yang diperlukan.

  • membuat procedure
sintaks untuk membuat procedure adalah sebagai berikut;
CREATE PROCEDURE nama_procedure (parameter_procedure())routine_body

Berikut contoh pembuatan procedure:

mysql> delimiter //
mysql> create procedure show_pekerja()
    -> begin
    -> select*from pekerja;
    -> end //
Query OK, 0 rows affected (0.00 sec)


mysql> alter table <nama tabel> add nama kolom (tipe data)(20);

mysql> alter table <nama tabel> modify <nama field> tipe data(15);

mysql> update <nama tabel>  where no_plat='B-3454-SDE';

mysql> call show_pekerja ();
namatabel = pekerja
+------------+---------------+--------+---------+-----------+
| nama_depan | nama_belakang | alamat | gaji    | pekerjaan |
+------------+---------------+--------+---------+-----------+
| John       | Doe           | Sleman |  500000 | Programer |
| Alison     | Mathews       | Sleman |  500000 | Programer |
| James      | Smith         | Bantul | 1000000 | Manager   |
| Celia      | Rice          | Klaten | 1000000 | Manager   |
| Robert     | Black         | Klaten |  200000 | Security  |
| Linda      | Green         | Bantul |  200000 | Security  |
| David      | Larry         | Bantul |  500000 | Programer |
| Hercule    | Poirot        | Klaten |  500000 | Programer |
| Lincoln    | Rhyme         | Klaten |  500000 | Programer |
| Sherlock   | Holmes        | Sleman | 1000000 | Manager   |
+------------+---------------+--------+---------+-----------+
10 rows in set (0.00 sec)

Query OK, 0 rows affected (0.13 sec)

  • parameter dalam procedure
Procedure menerima parameter (proc_parameter) yang didefinisikan sebagai berikut:

proc_parameter:
[ IN | OUT | INOUT ] param_name type
Dalam parameter procedure, didefinisikan jenis parameter, yaitu IN, OUT, atau INOUT. Bila tidak dispesifikasikan saat pembuatan, maka default jenis parameter yang dipilih adalah IN.
Parameter IN mengirimkan sebuah nilai ke dalam procedure. Procedure bisa saja merubah nilai parameter ini, namun perubahan tersebut tidak visibel terhadap pemanggil procedure ketika procedure tersebut selesai.
Parameter OUT mengirimkan nilai dari procedure ke pemanggil. Nilai inisial dari parameter ini adalah NULL dan nilainya visibel terhadap pemanggil.
Parameter INOUT diinisialisasi oleh pemanggil, dapat dimodifikasi oleh procedure, dan perubahan nilai parameter visibel terhadap pemanggil ketika procedure selesai.

parameter IN
Berikut adalah contoh penggunaan parameter IN:

mysql> delimiter $$
mysql> create procedure getPekerjaByAlamat (in namaAlamat varchar(255))
    -> begin
    -> select*from pekerja where alamat LIKE namaAlamat;
    -> end $$

Mysql> delimiter ;

Pada contoh di atas, dibuat procedure getPekerjaByAlamat dengan satu parameter masukan berjenis IN bernama namaAlamat. Procedure ini digunakan untuk menampilkan data pada tabel pekerja dengan nama kota sesuai parameter masukan. Pemanggilan procedure ini dapat dilihat pada contoh di bawah ini. Pada contoh ini, kita memasukkan Sleman” sebagai parameter masukan procedure.

mysql> call getPekerjaByAlamat("Sleman");
+------------+---------------+--------+
| nama_depan | nama_belakang | Alamat |
+------------+---------------+--------+
| John       | Doe           | Sleman |
| Alison     | Mathews       | Sleman |
| Sherlock   | Holmes        | Sleman |
+------------+---------------+--------+
3 rows in set (0.00 sec)

Query OK, 0 rows affected (0.02 sec)

  • parameter OUT
berikut adalah contoh penggunaan parameter OUT;
mysql> delimiter :)
mysql> create procedure getNumPekerja (out numPekerja int)
    -> begin
    -> select count(*) into numPekerja from pekerja;
    -> end :)
Query OK, 0 rows affected (0.02 sec)

mysql> delimiter ;

Pada contoh di atas, dibuat procedure untuk menampilkan jumlah pekerja dalam tabel. Hasil query tersebut disimpan dalam variabel numPekerja dengan statement INTO numPekerja. Pemanggilan pekerja dengan parameter OUT dilakukan dengan menggunakan variabel session yang diawali dengan karakter @. Pemanggilan procedure getNumPekerja ditunjukkan sebagai berikut:

mysql> call getNumPekerja(@num);
Query OK, 1 row affected (0.05 sec)

mysql> select @num;
+------+
| @num |
+------+
|   10 |
+------+
1 row in set (0.00 sec)

  • parameter INOUT
berikut adalah contoh penggunaan parameter INOUT:
mysql> delimiter ^^
mysql> create procedure increase(inout number int)
    -> begin
    -> set number = number + 15;
    -> end ^^
Query OK, 0 rows affected (0.04 sec)

mysql> delimiter ;
Pada contoh di atas, kita membuat procedure increase untuk menambahkan input dengan nilai 15. Memodifikasi nilai parameter input dilakukan dengan menggunakan SET. Contoh berikut memperlihatkan bagaimana memanggil procedure increase. Kita mendefinisikan terlebih dahulu variabel session @num dengan nilai 100. Kemudian setelah pemanggilan increase, nilai @num menjadi 115.

mysql> set @num = 100;
Query OK, 0 rows affected (0.00 sec)

mysql> call increase(@num);
Query OK, 0 rows affected (0.00 sec)

mysql> select @num;
+------+
| @num |
+------+
|  115 |
+------+
1 row in set (0.00 sec)

  • melihat procedure yang telah dibuat
Procedure yang telah kita buat dapat dilihat menggunakan statement SHOW PROCEDURE STATUS sebagai berikut:

mysql> show procedure status;
  • menghapus procedure
Procedure yang telah kita buat dapat dihapus menggunakan DROP PROCEDURE.
Mysql> DROP PROCEDURE increaseGaji;
INPUT DATA DENGAN PROCEDURE

mysql> create table hoho( nama varchar(10), alamat varchar(10));
Query OK, 0 rows affected (0.13 sec)

mysql> delimiter #
mysql> create procedure isi_data( in nama_depan varchar(10), nama_belakang varchar(10), alamat varchar(20), gaji int(8), pekerjaan varchar (15))
    -> begin
    -> insert into pekerja values(nama_depan, nama_belakang, alamat, gaji, pekerjaan);
    -> end #
Query OK, 0 rows affected (0.02 sec)

call isi_data(‘Dono’, ‘Setiawan’, ‘Bandung’, 1200000, ‘Kuli’);
call isi_data(‘Chika’, ‘Safira’, ‘Surabaya’, 2350000, ‘OfficeGirl’);

mysql> select * from pekerja;
+------+---------+
| nama | alamat  |
+------+---------+
| Fera | Abarawa |
| Rara | Jogja   |
| Didi | Sleman  |
+------+---------+

HAPUS DATA DENGAN PROCEDURE

mysql> delimiter #
mysql> create procedure hapus_data(in par_nama varchar(10))
    -> begin
    -> delete from pekerja where nama=par_nama;
    -> end#
Query OK, 0 rows affected (0.00 sec)

Mysql> delimiter ;

Call hapus_data(“Didi”);

mysql> select * from pekerja;
+------+---------+
| nama | alamat  |
+------+---------+
| Fera | Abarawa |
| Rara | Jogja   |
+------+---------+

No comments