Wednesday, December 20, 2017

Storing Procedure pada MySql

Sebelumnya download contoh database yang akan dijadikan studi kasus : sql

Parameter Storing Procedure

terdapat 3 parameter pada storing procedure

  • IN- adalah parameter default. Saat menggunakan parameter IN, maka program pemanggil harus memberikan argumen pada storing procedure.
  • OUT- nilai pada parameter out dapat diganti pada storing procedure dan nilai yang baru diberikan kembali pada program pemanggil.
  • INOUT- adalah kombinasi IN dan OUT, artinya program pemanggil melewatkan argumen dan storing procedure dapat merubah INOUT parameter dan memberikan nilai yang baru pada program pemanggil.
PARAMETER IN
mysql> DELIMITER //

mysql> CREATE PROCEDURE listofficeByCountry (IN namaCountry VARCHAR(200))
    -> BEGIN
    -> SELECT* FROM offices
    -> WHERE country = namaCountry;
    -> end//
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> call listofficeByCountry('USA');






mysql> call listofficeByCountry('France');
-+-------+-----------------+--------------------------+--------------+-------+---------+
| city | phone | addressLine1 | addressLine2 | state | country |
-+-------+-----------------+--------------------------+--------------+-------+---------+
| Paris | +33 14 723 4404 | 43 Rue Jouffroy D'abbans | NULL | NULL | France |
-+-------+-----------------+--------------------------+--------------+-------+---------+
1 row in set (0.04 sec)
Query OK, 0 rows affected (0.04 sec)

PARAMETER  IN dan OUT
mysql> DELIMITER //
mysql> CREATE PROCEDURE HitungStatusOrder(
    -> IN statusOrder VARCHAR(255),
    -> OUT total INT)
    -> BEGIN
    -> SELECT count(orderNumber)
    -> INTO total
    -> FROM orders
    -> WHERE status = statusOrder;
    -> END//
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;

mysql> call HitungStatusOrder('Shipped',@total);
Query OK, 1 row affected (0.03 sec)
mysql> SELECT @total;
+--------+
| @total |
+--------+
|    303 |
+--------+
1 row in set (0.00 sec)

mysql> call HitungStatusOrder('in process',@total);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT @total AS total_in_process;
+------------------+
| total_in_process |
+------------------+
|                6 |
+------------------+
1 row in set (0.00 sec)
mysql> 




No comments :

Post a Comment