Banco de Dados MySQL - Procedimento Armazenado - Cursor (Introdução - Declarar Cursor, Abrir Cursor, Obter Registro de Cursor, Fechar Cursor, Case)

Índice

introduzir

Declarar cursor 

Cursor aberto 

Obter registro do cursor 

Fechar cursor 

Caso 


introduzir

Cursor (CURSOR) é um tipo de dados usado para armazenar conjuntos de resultados de consultas. Os cursores podem ser usados ​​em procedimentos armazenados e funções para processar o conjunto de resultados em um loop.

O uso de cursores inclui declaração de cursor, OPEN, FETCH e CLOSE, e sua sintaxe é a seguinte.

Declarar cursor 

DECLARE 游标名称 CURSOR FOR 查询语句 ;

Cursor aberto 

OPEN 游标名称 ;

Obter registro do cursor 

FETCH 游标名称 INTO 变量 [, 变量 ] ;

Fechar cursor 

CLOSE 游标名称 ;

Caso 

De acordo com o parâmetro de entrada uage, consulte a tabela de usuários tb_user para todos os usuários cuja idade seja menor ou igual ao nome de usuário (nome) e profissão (profissão) de uage e insira o nome e a profissão do usuário em uma nova tabela criada (id, nome, profissão).

-- 逻辑:
-- A. 声明游标, 存储查询结果集
-- B. 准备: 创建表结构
-- C. 开启游标
-- D. 获取游标中的记录
-- E. 插入数据到新表中
-- F. 关闭游标

create procedure p(in uage int)
begin

    declare uname varchar(100);

    declare upro varchar(100);

    declare u_cursor cursor for select name,profession 
    from tb_user where age <= uage;

    drop table if exists tb_user_pro;
    create table if not exists tb_user_pro(
        id int primary key auto_increment,
        name varchar(100),
        profession varchar(100)
    );

    open u_cursor;

    while true do
        fetch u_cursor into uname,upro;
        insert into tb_user_pro values (null, uname, upro);
    end while;

    close u_cursor;

end;

call p(40);

O procedimento armazenado acima eventualmente reportará um erro quando o chamarmos.

Este erro é relatado porque não há condição de saída no loop while acima. Após a obtenção do conjunto de dados do cursor, se os dados forem obtidos novamente, um erro será reportado, encerrando assim a execução do programa.

Mas neste momento, a estrutura da tabela tb_user_pro e seus dados foram inseridos com sucesso.Ao atualizar a estrutura da tabela, podemos ver os dados na estrutura da tabela.

Embora tenhamos implementado as funções acima, a lógica não é perfeita e, após a execução do programa, os dados não podem ser obtidos e o banco de dados reporta um erro. A seguir, precisamos concluir este procedimento armazenado e resolver este problema.

Para resolver este problema, você precisa usar o manipulador de condições Handler fornecido no MySQL. Aprenderemos sobre isso no próximo artigo.


FIM


Aprenda com: Dark Horse Programmer - Curso de banco de dados MySQL
 

Acho que você gosta

Origin blog.csdn.net/li13437542099/article/details/134322645
Recomendado
Clasificación