Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Prosedur Tersimpan MySQL dengan Parameter

Terkadang Anda mungkin perlu memberikan input ke prosedur tersimpan di MySQL. Pada artikel ini, kita akan melihat cara membuat prosedur tersimpan MySQL dengan parameter dan berbagai jenis parameter yang didukung dalam prosedur tersimpan.

Prosedur Tersimpan MySQL dengan Parameter

Berikut adalah langkah-langkah untuk membuat stored procedure dengan parameter. MySQL mendukung 3 jenis parameter prosedur tersimpan – IN, OUT, dan INOUT. Mari kita lihat masing-masing secara detail

MASUK – Ini adalah mode default. Dalam mode ini, pernyataan panggilan harus meneruskan argumen ke prosedur tersimpan. Juga, nilai parameter tipe IN dilindungi, yang berarti meskipun Anda mengubah nilainya di dalam prosedur tersimpan, itu akan tetap tidak berubah di luarnya.

KELUAR – Nilai parameter OUT dapat diubah di dalam prosedur tersimpan dan nilai barunya akan diteruskan kembali ke pernyataan panggilan.

MASUK KELUAR – Dalam hal ini, pernyataan panggilan dapat meneruskan argumen, dan prosedur tersimpan dapat mengubah nilai ini dan meneruskannya kembali ke pernyataan panggilan.

Berikut sintaks untuk stored procedure dengan parameter di MySQL.

[IN | OUT | INOUT] parameter_name datatype[(length)]

Dalam pernyataan di atas, pertama-tama kita tentukan jenis parameter, kemudian nama parameter dan jenis kolom.

Prosedur Tersimpan MySQL dengan Contoh Parameter

Mari kita lihat beberapa contoh prosedur tersimpan dengan parameter.

Parameter IN

Berikut query SQL untuk membuat stored procedure dengan parameter IN.

mysql> DELIMITER //

mysql> CREATE PROCEDURE get_product(
       IN prod_id int
       )
       BEGIN
       SELECT *
        FROM products
       WHERE product_id = prod_id;
       END //

mysql> DELIMITER ;
mysql> call get_product(1);
+------------+--------------+-------+
| product_id | product_name | price |
+------------+--------------+-------+
|          1 | iPhone 11    |   400 |
+------------+--------------+-------+

mysql> call get_product();
ERROR 1318 (42000): Incorrect number of arguments for PROCEDURE sample.get_product; expected 1, got 0

Di atas, kami telah mendefinisikan parameter prosedur tersimpan IN prod_id . Ketika kami meneruskan argumennya dalam pernyataan panggilan, prosedur tersimpan mengembalikan hasil yang diharapkan. Namun, jika Anda tidak memberikan argumen, maka itu akan memberikan kesalahan.

Bonus Baca :Cara Membuat Composite Primary Key di MySQL

Parameter KELUAR

Berikut adalah prosedur tersimpan yang dibuat menggunakan parameter OUT.

mysql> DELIMITER $$

mysql> CREATE PROCEDURE get_count(
       IN prod_id int,
       OUT total INT
       )
       BEGIN
       SELECT COUNT(*)
       INTO total
       FROM products
       WHERE product_id = prod_id;
       END$$

mysql> DELIMITER ;

mysql> call get_count(1,@total);

mysql> select @total;
+--------+
| @total |
+--------+
|      1 |
+--------+

Dalam prosedur tersimpan di atas, kami mendefinisikan 2 parameter – parameter IN untuk prod_id dan parameter OUT untuk menyimpan hasil prosedur.

Ketika kami melewati id produk dalam pernyataan panggilan, prosedur tersimpan kami menghitung jumlah baris yang cocok dengan id produk ini dan menyimpan hasilnya dalam parameter OUT total

Bonus Baca :Cara Memotong Tabel di MySQL

Parameter INOUT

Berikut adalah prosedur tersimpan yang dibuat menggunakan parameter INOUT.

DELIMITER $$

CREATE PROCEDURE counter(
	INOUT count INT,
    IN increment INT
)
BEGIN
	SET count = count + increment;
END$$

DELIMITER ;

Dalam prosedur tersimpan di atas, kami telah mendefinisikan parameter IN kenaikan dan parameter INOUT hitung yang menyimpan hasil prosedur tersimpan. Prosedur tersimpan kami pada dasarnya menambahkan kenaikan untuk menghitung parameter dan menyimpan hasilnya di count parameter.

mysql> SET @count = 10;

mysql> CALL counter(@count,1);

mysql> SELECT @count;
+--------+
| @count |
+--------+
|     11 |
+--------+

Semoga sekarang Anda dapat dengan mudah membuat stored procedure dengan parameter di MySQL.

Bonus Baca :MySQL DROP VIEW

Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara saya menggunakan penghapusan kaskade di mysql?

  2. jQuery Validasi penggunaan metode jarak jauh untuk memeriksa apakah nama pengguna sudah ada

  3. Bagaimana cara menyiapkan pernyataan untuk kueri pembaruan?

  4. Cara Menghitung Perbedaan Antara Dua Timestamp di MySQL

  5. kesalahan mysql 1364 Bidang tidak memiliki nilai default