Ajuda no Cursor
Pessoal, estou tentando aprender utilizar o Cursor no MySQL, mas ao trocar a seguinte linha
DECLARE meuCursor CURSOR FOR SELECT * FROM TABELAX
por
DECLARE meuCursor CURSOR FOR SQL_TEST
estoura erro. Tentei outros tipos de variáveis como TEXT, VARCHAR, CHAR e entre outros e sem sucesso.
Não posso utilizar o SQL diretamente no cursor, pois dependo desta informação na entrada realizada através dos parâmetros.
Alguém tem alguma dica?
DELIMITER $$
CREATE PROCEDURE EXEMP_CURSOR (
IN SQL_TEST text)
BEGIN
DECLARE no_more_rows BOOLEAN;
DECLARE loop_cntr INT DEFAULT 0;
DECLARE num_rows INT DEFAULT 0;
DECLARE meuCursor CURSOR FOR SQL_TEST
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_rows = TRUE;
OPEN meuCursor;
SELECT FOUND_ROWS() INTO num_rows;
the_loop: LOOP
FETCH meuCursor
INTO name_val, status_update_val;
IF no_more_rows THEN
CLOSE meuCursor;
LEAVE the_loop;
END IF;
select name_val, status_update_val;
SET loop_cntr = loop_cntr + 1;
END LOOP the_loop;
END $$
DELIMITER ;
DECLARE meuCursor CURSOR FOR SELECT * FROM TABELAX
por
DECLARE meuCursor CURSOR FOR SQL_TEST
estoura erro. Tentei outros tipos de variáveis como TEXT, VARCHAR, CHAR e entre outros e sem sucesso.
Não posso utilizar o SQL diretamente no cursor, pois dependo desta informação na entrada realizada através dos parâmetros.
Alguém tem alguma dica?
DELIMITER $$
CREATE PROCEDURE EXEMP_CURSOR (
IN SQL_TEST text)
BEGIN
DECLARE no_more_rows BOOLEAN;
DECLARE loop_cntr INT DEFAULT 0;
DECLARE num_rows INT DEFAULT 0;
DECLARE meuCursor CURSOR FOR SQL_TEST
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_rows = TRUE;
OPEN meuCursor;
SELECT FOUND_ROWS() INTO num_rows;
the_loop: LOOP
FETCH meuCursor
INTO name_val, status_update_val;
IF no_more_rows THEN
CLOSE meuCursor;
LEAVE the_loop;
END IF;
select name_val, status_update_val;
SET loop_cntr = loop_cntr + 1;
END LOOP the_loop;
END $$
DELIMITER ;
Alessandro Yamasaki
Curtidas 0