Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Procedimento armazenado do MySQL com parâmetros


Às vezes, você pode precisar passar a entrada para o procedimento armazenado no MySQL. Neste artigo, veremos como criar um procedimento armazenado MySQL com parâmetros e os diferentes tipos de parâmetros suportados em procedimentos armazenados.


Procedimento armazenado do MySQL com parâmetros


Aqui estão as etapas para criar o procedimento armazenado com parâmetros. O MySQL suporta 3 tipos de parâmetros de procedimento armazenado – IN, OUT e INOUT. Vejamos cada um deles em detalhes



EM – Este é o modo padrão. Nesse modo, a instrução de chamada deve passar o argumento para o procedimento armazenado. Além disso, o valor de um parâmetro do tipo IN é protegido, ou seja, mesmo que você altere seu valor dentro do procedimento armazenado, ele permanecerá inalterado fora dele.

SAÍDA – O valor de um parâmetro OUT pode ser alterado dentro do procedimento armazenado e seu novo valor será passado de volta para a instrução de chamada.

INOUT – Nesse caso, a instrução de chamada pode passar um argumento e o procedimento armazenado pode modificar esse valor e passá-lo de volta para a instrução de chamada.

Aqui está a sintaxe do procedimento armazenado com parâmetros no MySQL.
[IN | OUT | INOUT] parameter_name datatype[(length)]

Na instrução acima, primeiro especificamos o tipo de parâmetro, depois o nome do parâmetro e o tipo de coluna.


Procedimento armazenado do MySQL com exemplos de parâmetros


Vejamos alguns exemplos de procedimento armazenado com parâmetros.

Parâmetro IN


Aqui está a consulta SQL para criar o procedimento armazenado com o parâmetro 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

Acima, definimos um parâmetro de procedimento armazenado IN prod_id . Quando passamos seu argumento na instrução de chamada, o procedimento armazenado retorna os resultados esperados. No entanto, se você não passar um argumento, ele dará um erro.

Bônus de leitura:Como criar chave primária composta no MySQL


Parâmetro de SAÍDA


Aqui está um procedimento armazenado criado usando o parâmetro 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 |
+--------+

No procedimento armazenado acima, definimos 2 parâmetros – um parâmetro IN para prod_id e um parâmetro OUT para armazenar o resultado do procedimento.

Quando passamos o ID do produto na instrução de chamada, nosso procedimento armazenado calcula a contagem de linhas que correspondem a esse ID do produto e armazena o resultado no parâmetro OUT total

Bônus de leitura:Como truncar a tabela no MySQL


Parâmetro INOUT


Aqui está um procedimento armazenado criado usando o parâmetro INOUT.
DELIMITER $$

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

DELIMITER ;

No procedimento armazenado acima, definimos um parâmetro IN increment e um parâmetro INOUT contagem que armazena o resultado do procedimento armazenado. Nosso procedimento armazenado basicamente adiciona o incremento para contar parâmetro e armazena o resultado em count parâmetro.
mysql> SET @count = 10;

mysql> CALL counter(@count,1);

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

Espero que agora você possa criar facilmente um procedimento armazenado com parâmetros no MySQL.

Bônus de leitura:MySQL DROP VIEW



O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!