Criação de Cursores para atualizar tabela

MySQL

24/08/2018

Olá. Gostaria de uma orientação quanto a um desafio no MySQL 8:
Tenho duas tabelas:
#1: usuarios (id_user, nome, nascimento, endereço, cidade, ...)
#2: utilizacao (id_medicamento, nome, nascimento, medicamento, data, ...)
A tabela #1 armazena todos os dados dos usuarios, cada um com um id.
A tabela #2 armazena todas as utilizações dos usuarios (e contém muito mais linhas), mas não tenho o id_user, para fazer um Join. Apenas o nome e data de nascimento que são campos também encontrados na tabela #1.
Preciso criar um Cursor que percorra linha a linha a tabela #2, procurando o id_user correspondente, comparando o nome e nascimento com a tabela#1, e atualizar esse id_user na tabela#2, em uma nova coluna.
Juliano Nobrega

Juliano Nobrega

Curtidas 0

Respostas

Ricardo Pestana

Ricardo Pestana

24/08/2018

bom dia Juliano,

Se entendi bem o que vc quer fazer, acho que seria mais ou menos assim sua rotina com cursor

CREATE PROCEDURE `exemplo` ()
BEGIN

declare nome_aux varchar(45);
declare nascimento_aux date;
declare iduser_aux varchar(45);
declare done int default 0;

DECLARE curs CURSOR FOR (
SELECT id_user, nome, nascimento FROM devmedia.usuarios_ex
);

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN curs;

REPEAT
FETCH curs INTO iduser_aux, nome_aux, nascimento_aux;
IF NOT done THEN
update utilizacao_ex set id_user = iduser_aux where
nome = nome_aux and nascimento = nascimento_aux;
commit;
END IF;
UNTIL done END REPEAT;

CLOSE curs;
END
GOSTEI 0
Ricardo Pestana

Ricardo Pestana

24/08/2018

Juliano,

Como vc perguntou sobre cursor montei a procedure conforme sua duvida. Mas o update abaixo vai dar o mesmo resultado...


update utilizacao_ex x inner join usuarios_ex a
set x.id_user = a.id_user where x.nome = a.nome and x.nascimento = a.nascimento;
GOSTEI 0
POSTAR