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 Se alguém me puder ajudar!? Obrigado Cumprimentos