Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Съхранена процедура с параметри

Понякога може да се наложи да предадете вход към съхранената процедура в MySQL. В тази статия ще разгледаме как да създадем MySQL съхранена процедура с параметри и различните типове параметри, поддържани в съхранените процедури.

Съхранена процедура на MySQL с параметри

Ето стъпките за създаване на съхранена процедура с параметри. MySQL поддържа 3 типа параметри на съхранените процедури – IN, OUT и INOUT. Нека разгледаме всеки от тях подробно

В – Това е режимът по подразбиране. В този режим операторът за повикване трябва да предаде аргумента на съхранената процедура. Също така стойността на параметър от типа IN е защитена, което означава, че дори ако промените стойността му в съхранената процедура, тя ще остане непроменена извън нея.

ВЪН – Стойността на параметър OUT може да бъде променена в съхранената процедура и новата му стойност ще бъде предадена обратно на оператора за повикване.

INOUT – В този случай операторът за повикване може да предаде аргумент, а съхранената процедура може да промени тази стойност и да я предаде обратно на оператора за повикване.

Ето синтаксиса на съхранената процедура с параметри в MySQL.

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

В горния израз първо указваме типа на параметъра, след това името на параметъра и типа на колоната.

Съхранена процедура на MySQL с примери за параметри

Нека разгледаме някои примери за съхранени процедури с параметри.

IN параметър

Ето SQL заявката за създаване на съхранена процедура с 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

По-горе сме дефинирали параметър на IN запомнена процедура prod_id . Когато предадем неговия аргумент в оператор за повикване, съхранената процедура връща очакваните резултати. Ако обаче не предадете аргумент, той дава грешка.

Бонус за четене:Как да създадете композитен първичен ключ в MySQL

OUT параметър

Ето съхранена процедура, създадена с помощта на параметър 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 |
+--------+

В горната съхранена процедура ние дефинираме 2 параметъра – IN параметър за prod_id и OUT параметър за съхраняване на резултата от процедурата.

Когато предадем идентификатор на продукт в оператор за повикване, нашата съхранена процедура изчислява броя на редовете, които съответстват на този идентификационен номер на продукта и съхранява резултата в OUT параметър total

Бонус за четене:Как да съкратите таблицата в MySQL

Параметър INOUT

Ето съхранена процедура, създадена с параметър INOUT.

DELIMITER $$

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

DELIMITER ;

В горната съхранена процедура сме дефинирали IN параметър инкремент и INOUT параметър count който съхранява резултата от съхранената процедура. Нашата съхранена процедура основно добавя инкремента за преброяване параметър и съхранява резултата в брой параметър.

mysql> SET @count = 10;

mysql> CALL counter(@count,1);

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

Надяваме се, че сега можете лесно да създадете съхранена процедура с параметри в MySQL.

Бонус четене:MySQL DROP VIEW

Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Съхранени процедури

  2. ГРЕШКА 1148:Използваната команда не е разрешена с тази версия на MySQL

  3. В MySQL мога ли да копирам един ред за вмъкване в същата таблица?

  4. Neo4j - Импортиране на данни от CSV файл с помощта на Cypher

  5. Как да инсталирате MySQL на Windows 10? – Вашето еднократно решение за инсталиране на MySQL