Tem razão. Obrigado pela ajuda!
Rubens José Rodrigues -----Mensagem original----- De: [email protected] [mailto:[email protected]] Em nome de Alexsandro Haag Enviada em: terça-feira, 6 de julho de 2010 11:09 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] "cursor xxxx already in use" : onde estou errando? Talvez no seu IF, você esteja retornando true antes de fechar o cursor... if (current_date >= registros.datagozoini) and (current_date <= registros.datagozofim) then return true; close _registros; Tente fechar antes do return... Alex On 06-07-2010 10:55, TI wrote: > > Olá pessoal, > > Preciso da ajuda de vocês no seguinte : > > a) Criei uma function que me retorna se um determinado funcionário > está de férias neste caso eu passo como parâmetro de entrada o código > do funcionário e retorno “Verdadeiro” ou “Falso” em suas situações. O > funcionamento está ok se usada isoladamente (select * from > fnc_funcionario_afastado(matricula)) > > b) Quando usamos a function acima dentro de um select, como por > exemplo : select matricula, nome from funcionários where > (fnc_funcionario_afastado(matricula))=false o sistema retorna a > seguinte mensagem de erro : cursor "_registros" already in use. > > Cenário : PostgreSQL 8.4.1, compiled by Visual C++ build 1400, 32-bit > --> Windows XP > > Função : > > CREATE OR REPLACE FUNCTION "public"."fnc_funcionario_afastado" > ("eCodFunc" integer) RETURNS boolean AS > > $body$ > > DECLARE > > -- ferias > > _registros cursor for select datagozoini, > > datagozofim > > from historico_ferias > > where codfuncionario=$1 > > order by datagozofim; > > registros record; > > BEGIN > > -- abrindo o cursor do historico das ferias do funcionario; > > open _registros; > > loop > > fetch _registros into registros; > > exit when not found; > > if (current_date >= registros.datagozoini) and (current_date <= > registros.datagozofim) then > > return true; > > close _registros; > > exit; > > end if; > > end loop; > > close _registros; > > return false; > > END; > > $body$ > > LANGUAGE 'plpgsql' > > VOLATILE > > CALLED ON NULL INPUT > > SECURITY INVOKER > > COST 100; > > Onde será que estou errando? > > Obrigado e no aguardo, > > Rubens José Rodrigues > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
