Exemplos de cursor MySQL

Exemplos de cursor MySQL
No MySQL, a consulta Select retorna uma lista de registros correspondentes após a execução chamada de resultado. O cursor é um recurso útil do MySQL para atravessar cada registro separadamente do conjunto de resultados. Às vezes, é necessário executar processamento adicional para todos os registros específicos do conjunto de resultados antes de retornar a saída da consulta. Isso pode ser feito facilmente usando o cursor. Os recursos, vantagens, desvantagens e usos do cursor MySQL foram descritos neste tutorial.

Recursos do MySQL Cursor:

  1. O cursor MySQL é assático para a versão 8 do MySQL+. Isso significa que o servidor de banco de dados pode ou não fazer uma cópia do conjunto de resultados.
  2. MySQL Cursor é somente leitura. Portanto, não pode ser usado para atualizar o registro.
  3. MySQL Cursor não é rolável. Isso significa que só pode avançar e não pode pular nenhum registro.

Passos para usar um cursor:

As principais etapas de usar o cursor no MySQL para ler cada registro do conjunto de resultados são mostradas abaixo.

Declare um cursor:

Declarar cursor_name cursor para select_statement;

A variável cursor exige definir para iterar o conjunto de resultados retornados pela instrução SELECT.

Abra o cursor

Abrir cursor_name;

O cursor precisa se abrir para apontar para o ponto de partida do conjunto de resultados.

Pegue o cursor

Buscar cursor_name em variable_list;

O comando Fetch é usado para ler os campos definidos na consulta selecionada que foi usada no momento da declaração do cursor.

Feche o cursor

Fechar cursor_name;

O cursor é necessário para fechar para redefinir o conjunto de resultados e remover a referência ao conjunto de resultados.

Pré-requisitos:

Você precisa criar as tabelas necessárias com dados para saber o uso de um cursor em Mysql. Abra o terminal e execute o seguinte comando para se conectar com o servidor MySQL se não houver senha para o usuário root.

$ sudo mysql -u root

Execute o seguinte comando para selecionar o banco de dados.

Use test_db;

Execute o seguinte comando para criar um banco de dados nomeado test_db.

Criar banco de dados test_db;

Execute a seguinte consulta para criar uma tabela chamada Sales_persons com quatro campos.

Crie tabela sales_persons (
ID int Auto_increment Chave primária,
Nome Varchar (30) não nulo,
Email Varchar (50),
contact_no varchar (30));

Execute a seguinte consulta para inserir três registros no Sales_person mesa.

Inserir em 'sales_persons' ('id', 'nome', 'email', 'contact_no') valores (null, 'kamal hasan', '[email protected] ',' 0191275634 '),
(Null, 'nila hossain', '[email protected] ',' 01855342357 '),
(Null, 'Abir Hossain', '[email protected] ',' 01634235698 ');

Execute a seguinte consulta para criar uma tabela chamada vendas com quatro campos que contém uma chave estrangeira que criará o relacionamento um para muitos Sales_persons Tabela para o vendas mesa.

Crie vendas de tabela (
Id int não é uma chave primária nula,
Sales_date Data não nula,
quantidade int,
sp_id int,
Restrição fk_sp chave estrangeira (sp_id)
Referências Sales_persons (ID)
Em excluir cascata na atualização em cascata);

Execute a seguinte consulta para inserir quatro registros no vendas mesa.

Inserir em 'vendas' ('id', 'sales_date', 'valor', 'sp_id') valores
('90', '2021-11-09', '800000', '1'),
('34', '2020-12-15', '5634555', '3'),
('67', '2021-12-23', '900000', '1'),
('56', '2020-12-31', '6700000', '1');

Uso do MySQL Cursor:

O cursor é usado principalmente no procedimento ou função MySQL que contém uma ou mais consultas selecionadas, e o cursor declarado itera cada registro do conjunto de resultados retornados pela consulta. Crie uma função MySQL nomeada Calcular_bonus com a seguinte declaração que assumirá um argumento inteiro e retornará um valor de flutuação. A consulta selecionada usada na função calculará o valor total das vendas de cada vendedor e devolverá o nome do vendedor e as vendas totais no conjunto de resultados. A função do cursor é calcular 15% do total de vendas como um bônus se o valor total das vendas for superior a 10000; Caso contrário, o bônus será 10% do total de vendas. A função retornará o valor do bônus com base no valor de identificação do vendedor. Execute a seguinte declaração do prompt MySQL depois de selecionar o banco de dados para criar a função.

Delimitador //
Criar função 'calcular_bonus' ('Spid' Int)
Retorna Varchar (200)
Lê dados SQL
Determinístico
COMEÇAR
Declare feito Int padrão false;
Declare Total Int padrão 0;
Declarar pessoa Varchar (50) padrão "";
Declarar bônus int padrão 0;
Declarar saída Varchar (200);
Declarar cursor curs
Selecione o nome, soma (quantidade)
De vendas, Sales_persons
Onde sales_pesons.id = vendas.sp_id e sp_id = spid
Grupo por sp_id;
Declarar o manipulador de continuação para não encontrado definido done = true;
Abre curva;
Buscar curar -se em pessoa, total;
Se total> 10000, então
Definir bônus = total*0.15;
OUTRO
Definir bônus = total*0.10;
FIM SE;
Definir saída = concat ("o bônus de", pessoa "é tk.", bônus,".");
Fechar curva;
Saída de retorno;
FIM;
//

Execute a seguinte consulta para ler todos os registros do Sales_persons mesa.

Selecione * de Sales_persons;

Execute a seguinte consulta para ler todos os registros do vendas mesa.

Selecione * a partir de vendas;

Execute a seguinte consulta para chamar o Calcular_bonus () função do mysql com o valor do argumento, 1. De acordo com a tabela de vendas, existem três registros para o vendedor cujo id é 1. Portanto, o bônus terá 15% de desconto (6700000+900000+800000).

Selecione Calcule_bonus (1);

Execute a seguinte consulta para chamar o Calcular_bonus () função do mysql com o valor do argumento, 2. De acordo com a tabela de vendas, não há registro para o vendedor cujo id é 2. Então, o bônus será 0.

Selecione Calcular_Bonus (2);

Execute a seguinte consulta para chamar o Calcular_bonus () função do mysql com o valor do argumento, 3. De acordo com a tabela de vendas, há um recorde para o vendedor cujo id é 3. Portanto, o bônus será de 15% de 5634555.

Selecione Calcular_Bonus (3);

Conclusão:

O cursor do MySQL facilita a tarefa específica, iterando cada linha da tabela. O cursor MySQL foi mostrado neste tutorial usando uma função MySQL. O cursor MySQL pode ser usado no procedimento MySQL também. Espero que o conceito do MySQL Cursor seja liberado para o usuário, e o usuário poderá usar o cursor depois de ler este tutorial.