Ir para conteúdo

POWERED BY:

Arquivado

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

peppe_oracle

[Resolvido] Cursor - Erro em declaração de handler

Recommended Posts

Boa noite,

Estou tentando utilizar o cursor na procedure abaixo, mas um error é emitido quanto tento compilar a procedure bem na delcarção do handler para parar o loop repeat depois de percorrer todos os registros dele. Alguém sabe me dizer porque essa coisa agora?

 

DELIMITER $$
CREATE PROCEDURE SP_TESTE()
BEGIN

  DECLARE VID BIGINT;

  DECLARE C CURSOR FOR SELECT ID FROM ZEN_USUARIOS;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;

 OPEN C;


 REPEAT

 FETCH C INTO VID;

 UNTIL DONE END REPEAT;

 CLOSE C;

END$$

DELIMITER ;

 

O error que ele acusa é na linha:

 DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;

 

E é o seguinte:

 

Script line: 2 Unknown system variable 'DONE'

A versão da minha base de dados é:

'6.0.7-alpha-community'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Eu não havia percebido, mas a soluçãoé bem simples, basta declarar a variável done antes de declarar o handler senão realmente não vai.

 

DELIMITER $$CREATE PROCEDURE SP_TESTE()
BEGIN  
DECLARE VID BIGINT;  
DECLARE DONE BIGINT;
DECLARE C CURSOR FOR SELECT ID FROM ZEN_USUARIOS;  
DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1; 
OPEN C; REPEAT FETCH C INTO VID; 
UNTIL DONE END REPEAT; 
CLOSE C;END$$
DELIMITER ;

Abraços

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.