Boa tarde. Estou com um problema em criar um procedimento e precisava de ajuda...
Eu estou a transferir dados do access para o mysql
Mas antes de inserir esses dados da tabela definitiva, mando os dados primeiro para uma tabela temporária...
O que quero depois fazer é:
Comparar a tabela temporária com a tabela definitiva
Mas quero comparar um atributo que é a chave primária...caso já existas dados na tabela definitiva com a mesma chave primária que existe no tabela temporária, não insere esse registo para a tabela definitiva, caso não exista transfere esse registo
Concluindo, transferir da tabela temporária para a tabela definitiva os registos que a chave primária da tabela temporária não exista na tabela definitiva
Fiz me entender?
Já fiz isto mas não resulta, e não sei o que esta mal...?
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Join2`()
BEGIN
-- Definição de variáveis utilizadas no Procedimento
Declare CODIGO_INVENTARIO varchar(255);
Declare sitio, TIPO_ACHADO, CATEGORIA_ACH, MATERIA_PRIMA_ACH, NIVEL_ARTIFICIAL, CAMADA, QUADRADO, ORIENTACAO, INCLINACAO, DEPOSITO varchar(45);
Declare CONSOLIDACAO, RESTAURO, MOLDAGEM_REPLICA, ANALISE varchar(45);
Declare DESCRICAO, OBSERVACOES varchar(255);
Declare ANO, XN, YN, ZN,C_cm,L_cm,E_cm,A_cm,D_cm,CAIXA,CONTENTOR,PRATELEIRA int(11);
Declare a,b int default 0;
-- Definição do cursor
Declare c1 cursor for(
Select sip2.temp_teste.sitio
from sip2.temp_teste
inner join sip2.teste
on sip2.temp_teste.sitio = sip2.teste.sitio);
-- Definição da variável de controle de looping do cursor
Declare continue HANDLER for not found
SET b = 1;
-- Abre o cursor
OPEN c1;
Repeat
Fetch c1 into CODIGO_INVENTARIO, sitio,TIPO_ACHADO,CATEGORIA_ACH,MATERIA_PRIMA_ACH,DESCRICAO,ANO,NIVEL_ARTIFICIAL,CAMADA,QUADRADO,XN,YN,ZN,ORIENTACAO,INCLINACAO,DEPOSITO,C_cm,L_cm,E_cm,A_cm,D_cm,CONSOLIDACAO,RESTAURO,MOLDAGEM_REPLICA,ANALISE,CAIXA,CONTENTOR,PRATELEIRA,OBSERVACOES;
if b = 0 then
INSERT INTO sip2.teste (CODIGO_INVENTARIO, sitio,TIPO_ACHADO,CATEGORIA_ACH,MATERIA_PRIMA_ACH,DESCRICAO,ANO,NIVEL_ARTIFICIAL,CAMADA,QUADRADO,XN,YN,ZN,ORIENTACAO,INCLINACAO,DEPOSITO,C_cm,L_cm,E_cm,A_cm,D_cm,CONSOLIDACAO,RESTAURO,MOLDAGEM_REPLICA,ANALISE,CAIXA,CONTENTOR,PRATELEIRA,OBSERVACOES)
values ('c1');
SELECT * FROM sip2.temp_teste;
end if;
until b = 1
end repeat;
Close c1;
END
Pergunta
Helio13
Boa tarde. Estou com um problema em criar um procedimento e precisava de ajuda...
Eu estou a transferir dados do access para o mysql
Mas antes de inserir esses dados da tabela definitiva, mando os dados primeiro para uma tabela temporária...
O que quero depois fazer é:
Comparar a tabela temporária com a tabela definitiva
Mas quero comparar um atributo que é a chave primária...caso já existas dados na tabela definitiva com a mesma chave primária que existe no tabela temporária, não insere esse registo para a tabela definitiva, caso não exista transfere esse registo
Concluindo, transferir da tabela temporária para a tabela definitiva os registos que a chave primária da tabela temporária não exista na tabela definitiva
Fiz me entender?
Já fiz isto mas não resulta, e não sei o que esta mal...?
Se alguém me puder ajudar!?
Obrigado
Cumprimentos
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.