Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dieison machado

Problema com o DECLARE na trigger

Recommended Posts

CREATE TRIGGER teste AFTER INSERT on agendamento_clientes 
	BEGIN
		DECLARE varRoteirosrotid int;
                
                SET varRoteirosrotid=(SELECT roteiros_rot_id FROM agendamento WHERE agen_id=new.agendamento_agen_id);

DECLARE varControlecontid int;

SET varControlecontid =(SELECT cont_id FROM controle_compras WHERE agendamento_agen_id=new.agendamento_agen_id);

DECLARE compra int;

DECLARE f int DEFAULT 0;

DECLARE compras CURSOR FOR SELECT Estacoes_estac_id FROM roteiro_item WHERE roteiros_rot_id=varRoteirosrotid;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET f = 1;

OPEN compras ;

REPEAT

FETCH compras INTO compra ;

INSERT INTO compras_item (clientes_passageiros_pas_id,Estacoes_estac_id,controle_cont_id) VALUES (new.clientes_passageiros_pas_id,compra,varControlecontid);

UNTIL (f = 1) END REPEAT ;

CLOSE compras ;
END

 

Quando tento criar essa trigger da o seguinte erro:

Erro

consulta SQL:
CREATE TRIGGER teste AFTER INSERT ON agendamento_clientes
BEGIN 
DECLARE varRoteirosrotid INT;

Mensagens do MySQL : 
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN
        DECLARE varRoteirosrotid int' at line 2

 

Estou começando a usar trigger agora, alguem poderia me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver , porém ela deveria retornar 2 linhas e esta retornando 3, com este código abaixo.

BEGIN

DECLARE compra int;

DECLARE controle int;

DECLARE f int DEFAULT 0;

DECLARE controles CURSOR FOR SELECT cc.cont_id FROM agendamento a, roteiro_item ri, controle_compras cc
				WHERE a.roteiros_rot_id = ri.roteiros_rot_id AND				   a.agen_id=cc.agendamento_agen_id AND a.agen_id =new.agendamento_agen_id;

DECLARE estacoes CURSOR FOR SELECT ri.Estacoes_estac_id FROM agendamento a, roteiro_item ri, controle_compras cc WHERE a.roteiros_rot_id = ri.roteiros_rot_id AND a.agen_id = cc.agendamento_agen_id AND a.agen_id =new.agendamento_agen_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET f = 1;

OPEN controles;

OPEN estacoes ;

REPEAT

FETCH estacoes into compra;

FETCH controles into controle;

INSERT INTO compras_item (clientes_passageiros_pas_id,Estacoes_estac_id,controle_compras_cont_id) VALUES (new.clientes_passageiros_pas_id,compra,controle);

UNTIL (f = 1) END REPEAT ;

CLOSE controles;

CLOSE estacoes ;

 END

 

Alguém pode me ajudar com esse erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.