Penggunaan Parameter Dalam Stored Procedure MySQL – Pamameter dalam stored procedure MySQL merupakan suatu komunikasi antara pemanggilan stored procedure dengan stored procedure yang telah dibuat dengan pendeklarasian atau penulisannya dilakukan setelah nama stored procedure. Dalam pembuatan stored procedure dapat menggunakan parameter atau tidak menggunakan sama sekali. Jumlah parameter yang digunakan tidak ditentukan, bisa hanya menggunakan satu parameter atau bahkan bisa ratusan sekaligus asalkan sesuai dengan kebutuhan yang akan digunakan. Dalam stored procedure memiliki tiga mode, yaitu: IN, OUT, dan INOUT.

1. IN adalah mode default dalam stored procedure. Jika dalam pembuatan stored procedure tidak mencantumkan mode, maka mode IN akan menjadi defaultnya. Pada saat melakukan pemanggilan atau call stored procedure, nilai yang diberikan akan diteruskan ke dalam stored procedure. Nilai dengan parameter IN ini dilindungi sampai stored procedure selesai dieksekusi dan tidak akan berubah.

2. OUT adalah suatu mode yang digunakan untuk mengembalikan suatu nilai dalam stored procedure. Nilai dalam mode OUT tidak dapat digunakan oleh stored procedure pada saat awal pemanggilan, karena mode OUT hanya mengeluarkan suatu nilai pada saat stored procedure dijalankan.

3. INOUT adalah mode gabungan dari IN dan OUT yang berarti dapat memberikan suatu nilai dan mengembalikan nilai yang telah diubah dalam stored procedure tersebut.

Stuktur dasar dalam penulisan parameter stored procedure adalah

CREATE PROCEDURE nama_procedure(MODE nama_parameter tipe_data_parameter(panjang_parameter))

Sebagai contoh lengkap dalam penggunaannya adalah

/* Contoh pembuatan parameter */
/* Tanpa menggunakan parameter IN */
DELIMITER //
CREATE PROCEDURE luasPersegi(sisi int)
  BEGIN
    SELECT sisi * sisi;
END //
DELIMITER;

/* Pemanggilan procedure */
CALL luasPersegi(7);

/* Menggunakan parameter IN */
DELIMITER //
CREATE PROCEDURE luasPersegi(IN sisi int)
  BEGIN
    SELECT sisi * sisi;
  END //
DELIMITER;

/* Pemanggilan procedure */
CALL luasPersegi(7);

/* Menggunakan parameter OUT */
DELIMITER //
CREATE PROCEDURE luasPersegi(OUT luas int)
  BEGIN
    select 7 * 7 into luas;
  END //
DELIMITER;

/* Pemanggilan procedure */
CALL luasPersegi(@luas);
select @luas;

/* Menggunakan parameter INOUT */
DELIMITER //
CREATE PROCEDURE perkalian(INOUT angka int)
  BEGIN
    SELECT (angka * angka) into angka;
  END //
DELIMITER;

/* Pemanggilan procedure */
SET @angka = 7;
CALL perkalian(@angka);
SELECT @angka;

/* Menggunakan lebih dari satu parameter*/
DELIMITER //
CREATE PROCEDURE luasPersegiPanjang(IN panjang int, IN lebar int, OUT luas int)
  BEGIN
    SELECT (panjang * lebar) into luas;
  END //
DELIMITER;

/* Pemanggilan procedure */
CALL luasPersegiPanjang(7, 3, @luas);
SELECT @luas;

Dalam penggunaan mode IN, OUT, atau INOUT dapat disesuaikan dengan kebutuhan dan kegunaan. Jadi tidak harus menggunakan IN dan OUT (dua parameter) jika menggunakan mode INOUT (satu parameter) saja sudah cukup dan sesuai dengan keperluan.

Happy Coding ^-^