Senhores, Tenho a seguinte PROCEDURE:
CREATE OR REPLACE FUNCTION correg.somatorio_correicao(cod_resolucao integer, > cod_membro integer, cod_orgexecucao integer, data_inicial date, data_final > date, cod_campos integer[]) > RETURNS integer AS > $BODY$ > DECLARE > subtotal integer; > total integer; > tam_array integer; > membro varchar; > orgexecucao varchar; > BEGIN > /*descobre o tamanho do array passado por parametro:*/ > tam_array := array_upper(cod_campos, 1); > > /*inicializa o contador*/ > total := 0; > > /*ajustando parametros na query*/ > membro := ''; > orgexecucao := ''; > > if cod_membro = 0 > then > membro := ' r.fk_tmpmembro = ' || cod_membro || ' and '; > end if; > > if cod_orgexecucao = 0 > then > orgexecucao := ' r.fk_tmporgaoexecucao = ' || cod_orgexecucao || ' > and '; > end if; > > /*varredura no array:*/ > for i in 1..tam_array loop > execute ' > select > (select > sum(v.quantidade) > from correg.valor v > join correg.raf r on > r.id = v.fk_raf > join rh.orgaoexecucao oe on > oe.fk_orgao = r.fk_tmporgaoexecucao > join rh.orgaoadministracao oa on > oa.id = oe.fk_orgaoadministracao > join rh.comarca cx on > cx.id = oa.fk_comarca > where > v.fk_campo = c.id and > (r.data between ' || data_inicial || ' and ' || data_final > || ') and > ' || membro || ' > ' || orgexecucao || ' > r.excluido is false > ) as quantidade > into subtotal > from correg.campo c > where > c.excluido is false and > c.fk_modelo = ' || cod_resolucao || ' > and c.id = ' || cod_campos[i] || ';'; > > /*vai construindo o valor total*/ > total := total + subtotal; > end loop; > > /*retorna a soma dos codigos:*/ > return total; > END; > $BODY$ > LANGUAGE 'plpgsql' VOLATILE; > ALTER FUNCTION correg.somatorio_correicao(integer, integer, integer, date, > date, integer[]) OWNER TO postgres; > O banco de dados aceita o codigo acima sem acusar nenhum tipo de problema, mas quando tento executar a query abaixo no pgadmin: select correg.somatorio_correicao(2, 0, 0, date '2009-10-01', date > '2009-11-01', array[1097,1098,1099,1100,1101,1102]); > O console de mensagens me retorna o seguinte erro: ERROR: EXECUTE of SELECT ... INTO is not implemented yet > CONTEXT: PL/pgSQL function "somatorio_correicao" line 30 at execute > statement > > > ********** Erro ********** > > ERROR: EXECUTE of SELECT ... INTO is not implemented yet > SQL state: 0A000 > Contexto: PL/pgSQL function "somatorio_correicao" line 30 at execute > statement > A linha 30 está localizada antes do comentário: */*varredura no array:*/* A versão do banco que utilizo é a 8.1, creio que o comando EXECUTE não seja compatível com esta versão, alguém conhece alguma alternativa para o código acima? Grato, Daniel -- Atenciosamente, Daniel Falcão Analista e Desenvolvedor de Software http://lattes.cnpq.br/2208735579737258 http://embuar.blogspot.com http://twitter.com/embuar
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral