Variáveis ​​de procedimento armazenado MySQL

Resumo : neste tutorial, você aprenderá sobre as variáveis ​​​​do procedimento armazenado do MySQL, incluindo como declará-las e usá-las.

Uma variável é um objeto de dados nomeado cujo valor pode mudar durante a execução de um procedimento armazenado .

Normalmente, você usa variáveis ​​para manter resultados imediatos. Essas variáveis ​​são locais para o procedimento armazenado.

Antes de usar uma variável, você precisa declará-la.

Declarando variáveis

Para declarar uma variável dentro de um procedimento armazenado, você usa a DECLARE  seguinte instrução:

DECLARE variable_name datatype(size) [DEFAULT default_value];Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • Primeiro, especifique o nome da variável após a DECLAREpalavra-chave. Certifique-se de que o nome da variável esteja de acordo com as regras de nomenclatura de colunas da tabela MySQL.
  • Segundo, defina o tipo de dados e o comprimento da variável. As variáveis ​​podem ter qualquer tipo de dados MySQL , como INT,, VARCHARDATETIME.
  • Terceiro, atribua um valor padrão à variável usando a DEFAULTopção. Se você declarar uma variável sem especificar um valor padrão, seu valor padrão será NULL.

O exemplo a seguir declara uma variável nomeada totalSalecom o tipo de dados DEC(10,2)e valor padrão de 0.0:

DECLARE totalSale DEC(10,2) DEFAULT 0.0;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

MySQL permite declarar duas ou mais variáveis ​​que compartilham o mesmo tipo de dados usando uma única DECLAREinstrução.

Por exemplo, o exemplo a seguir declara duas variáveis ​​inteiras totalQty stockCounte define seus valores padrão como zero.

DECLARE totalQty, stockCount INT DEFAULT 0;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Depois de declarar uma variável, você pode começar a usá-la.

A partir do MySQL 8.0.34, não é possível declarar múltiplas variáveis ​​com diferentes tipos de dados usando uma única instrução DECLARE.

Por exemplo, a declaração a seguir causará um erro de sintaxe:

DECLARE amount DECMIAL(10,2), 
        currency CHAR(3) DEFAULT 'USD';Linguagem de código:  PHP  ( php )

Para corrigir o erro, você precisa usar várias DECLAREinstruções da seguinte maneira:

DECLARE amount DECMIAL(10,2);
DECLARE currency CHAR(3) DEFAULT 'USD';Linguagem de código:  PHP  ( php )

Atribuindo variáveis

Para atribuir um valor a uma variável, você usa a SETinstrução:

SET variable_name = value;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por exemplo:

DECLARE total INT DEFAULT 0;
SET total = 10;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O valor da totalvariável está 10  após a atribuição.

Além da SET instrução, você pode usá-  SELECT INTOla para atribuir o resultado de uma consulta a uma variável, conforme mostrado no exemplo a seguir:

DECLARE productCount INT DEFAULT 0;

SELECT COUNT(*) 
INTO productCount
FROM products;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo:

  • Primeiro, declare uma variável nomeada productCounte inicialize seu valor como 0.
  • Em seguida, use a SELECT INTOinstrução para atribuir à productCountvariável o número de produtos selecionados na productstabela.

Escopos variáveis

Uma variável tem seu próprio escopo, que determina seu tempo de vida. Se você declarar uma variável dentro de um procedimento armazenado, ela estará fora do escopo quando a ENDinstrução do procedimento armazenado for alcançada.

Quando você declara uma variável dentro do BEGIN...ENDbloco, ela sai do escopo quando ENDé atingido.

MySQL permite que você declare duas ou mais variáveis ​​que compartilham o mesmo nome em escopos diferentes porque uma variável só é eficaz dentro de seu escopo.

Porém, declarar variáveis ​​com o mesmo nome em escopos diferentes não é considerada uma boa prática de programação.

Uma variável cujo nome começa com o @sinal é uma variável de sessão , disponível e acessível até o término da sessão.

Exemplo de variável de procedimento armazenado MySQL

O exemplo a seguir ilustra como declarar e usar uma variável em um procedimento armazenado:

DELIMITER $$

CREATE PROCEDURE GetTotalOrder()
BEGIN
	DECLARE totalOrder INT DEFAULT 0;
    
	SELECT 
		COUNT(*)
	INTO totalOrder FROM
		orders;
    
	SELECT totalOrder;
END$$

DELIMITER ;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Como funciona.

Primeiro, declare uma variável totalOrdercom valor padrão zero. Esta variável armazenará o número de pedidos da orderstabela.

DECLARE totalOrder INT DEFAULT 0;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, use a SELECT INTO  instrução para atribuir à variável totalOrdero número de pedidos selecionados na orderstabela:

SELECT COUNT(*) 
INTO totalOrder 
FROM orders;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, selecione o valor da variável totalOrder.

SELECT totalOrder;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Observe que você aprenderá como usar variáveis ​​de forma prática nos tutoriais subsequentes. O exemplo neste tutorial serve como ilustração para ajudá-lo a entender o conceito.

Esta instrução chama o procedimento armazenado GetTotalOrder():

CALL GetTotalOrder();Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Aqui está a saída:

Resumo

  • Use variáveis ​​para armazenar resultados imediatos em um procedimento armazenado.
  • O escopo de uma variável determina o tempo de vida da variável.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *