zenfra 0 Denunciar post Postado Julho 6, 2008 Boa noite, Gostaria de saber se é possível retornar um cursor através de uma procedure no mysql. Por exemplo: tabela estrutura: Field Type Null Key Default Extra nm_sexo_id int(11) NO PRI auto_increment ds_sexo_desc varchar(10) NO dt_sexo_cad date YES tm_sexo_cad time YES dt_sexo_atu date YES tm_sexo_atu time YES Na procedure abaixo gostaria de retornar um cursor com a seleção do registro a partir do id do sexo passado para o parâmetro p_NM_SEXO_ID. DELIMITER | CREATE PROCEDURE SP_SEXO_GET( IN p_NM_SEXO_ID INTEGER, OUT OUTCURSOR CURSOR ) BEGIN OPEN OUTCURSOR FOR SELECT * FROM TAB_SEXO WHERE NM_SEXO_ID = p_NM_SEXO_ID; END | DELIMITER; Em Oracle sei que poderia efetuar isso com a declaração abaixo, e gostaria de saber se é possível ou se existe uma outra forma de fazer isso com o mysql: CREATE OR REPLACE PROCEDURE SP_SEXO_GET AS p_NM_SEXO_ID TAB_SEXO.NM_SEXO_ID%TYPE, OUTCURSOR SYS_CURSOR) BEGIN OPEN OUTCURSOR FOR SELECT * FROM TAB_SEXO WHERE NM_SEXO_ID = p_NM_SEXO_ID; END SP_SEXO_GET; Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Bianchi 0 Denunciar post Postado Julho 6, 2008 Bom, vamos lá. . . O MySQL lhe permite executar cursores dentro de Stored Procedures, bem parecido com o Oracle, mas uma diferença que, o MySQL ainda não suporta cursores do tipo scrollable, ou seja, você não tem backwarding ou forwarding, assim como tem no Oracle. Para fazer esta sua consulta, seria interessante uma simples procedure, não precisando ser um cursor, ou, caso querida utilizar o cursor, vamos lá: DELIMITER // CREATE PROCEDURE busca_sexo (v_sexo_id INT) BEGIN IF (v_sexo_id IS NOT NULL) THEN SELECT * FROM TAB_SEXO WHERE NM_SEXO_ID = v_sexo_id; ELSE SELECT 'O sexo deve ser informado!' as MsgReturn; END IF; END; // Mais sobre cursors no MySQL - http://dev.mysql.com/doc/refman/5.0/en/cursors.html http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
zenfra 0 Denunciar post Postado Julho 6, 2008 Valeu Wagner Compartilhar este post Link para o post Compartilhar em outros sites