MySQL Forums
Forum List  »  Portuguese

Re: Iniciante em stored proceudres
Posted by: Lucas Michel
Date: July 22, 2008 05:57AM

para a segunda pergunta de se criar cursor dinamico o que eu achei foi que ainda não é suportado e esta em faze de estudo pra ser adicionado nas proximas versões do servidor, ai a forma de simular é utilizando tabeas temporarias com a ideia de se criar a a tabela temporaria com a estrutura que se que analizar e depois usar o curor pra manipular linha por linha ex:


DELIMITER $$

DROP PROCEDURE IF EXISTS `cse_2008`.`TESTA_EXISTENCIA_MATERIAL` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `TESTA_EXISTENCIA_MATERIAL`(nome_tabela varchar(100),
campo_tabela varchar(100),
parametro_tabela varchar(100),
out estado int)
BEGIN
/*esta variavel é pra concatenar o parametro de entrada com as aspas*/
DECLARE PARTE_TEXTO VARCHAR(100);

/*cria a variavel do parametro pra pesquisa com as aspas*/
SET PARTE_TEXTO = CONCAT('"',parametro_tabela,'"');

/*cria e executa a tabela temporaria*/

/*CREATE TEMPORARY TABLE*/
SET @stmt_text=CONCAT("CREATE TEMPORARY TABLE v_temp AS SELECT ",campo_tabela,"
from ",nome_tabela," where "
,campo_tabela," = ",PARTE_TEXTO);

PREPARE stmt FROM @stmt_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
/*/////\\\\\\*/

/*aqui se inicia o cursor pra manipular a tabela note que é necessário o inicio e o fim com begin e end*/
BEGIN
DECLARE PEGA_INF VARCHAR(100);
DECLARE cur1 CURSOR FOR SELECT * FROM v_temp;
/*este handler é para que sé na instrução do cursor ele retornar null não gerar exeção e ja adiciona
a variavavel de retorno como 0 */
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' set @estado = 0;
/*AQUI SE ABRE O CURSOR PARA SE PUDER UTILIZAR O MEMOS*/
OPEN cur1;
/*AQUI SE ATRIBUI A PRIMEIRA LINHA DO CURSOR A VARIAVEL CRIADA PARA O TESTE
LEMBRANDO QUE DEVERA EXISTIR UMA VARIAVEL PRA CADA COLUNA DA PESQUISA*/
FETCH cur1 INTO PEGA_INF;
/*SE TESTA O RESULTADO PARA PREENCHER O ESTADO*/
IF (PEGA_INF IS not null) then
SET @estado = 1;
END IF;
/*SE FECHA O CURSOR*/
CLOSE cur1;
END;
/*RETORNA O RESULTADO DA INSTRUÇÃO SQL*/
/*select @estado;*/
END $$

DELIMITER ;

ESPERO QUE TAMBÉM POSSA AJUDAR MAS ALGUEM CHAU

Options: ReplyQuote


Subject
Views
Written By
Posted
5942
July 17, 2008 06:20AM
Re: Iniciante em stored proceudres
6117
July 22, 2008 05:57AM
3655
February 04, 2009 01:07PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.