Não estou coneguindo resolver o erro abaixo que ocorre em uma função PL/pgSQL que estou criando
ERRO: não pode abrir consulta SELECT como cursor
CONTEXT: PL/pgSQL function formula_cont_nv(integer,integer,integer,integer) line 5 at FOR sobre registros de SELECT
********** Error **********
ERRO: não pode abrir consulta SELECT como cursor
SQL state: 42P11
Context: PL/pgSQL function formula_cont_nv(integer,integer,integer,integer) line 5 at FOR sobre registros de SELECT
Função que está ocorrendo o erro:
-- Function: formula_cont_nv(integer, integer, integer, integer)
-- DROP FUNCTION formula_cont_nv(integer, integer, integer, integer);
CREATE OR REPLACE FUNCTION formula_cont_nv(mesi integer, mesf integer, anoi integer, anof integer)
RETURNS text AS
$BODY$
DECLARE
dados tp_formula_cont%ROWTYPE;
BEGIN
FOR dados IN (WITH v_entradas
AS (
SELECT date_trunc('month', ent_data) mes
,sum(ent_valor) soma
FROM entradas
WHERE extract(year FROM ent_data) = extract(year FROM now())
GROUP BY 1
)
,v_saidas
AS (
SELECT date_trunc('month', sai_data) mes
,sum(sai_valor) soma
FROM saidas
WHERE extract(year FROM sai_data) = extract(year FROM now())
GROUP BY 1
)
SELECT extract(year FROM gs.mes)::NUMERIC ano
,extract(month FROM gs.mes)::NUMERIC mes
,round(coalesce(e.soma, 0), 2) entrada
,round(coalesce(s.soma, 0), 2) saida
,round(coalesce(e.soma, 0) - coalesce(s.soma, 0), 2) saldo
,round(coalesce((100 * s.soma) / e.soma, 0), 2) percentual
INTO dados
FROM v_entradas e
INNER JOIN v_saidas s ON e.mes = s.mes
RIGHT JOIN generate_series(date_trunc('year', now()), date_trunc('year', now()) + interval '1 year - 1 month', '1 month') gs(mes) ON gs.mes = e.mes)
LOOP
-- can do some processing here
execute 'INSERT INTO ' || contabilizacoes || 'VALUES' || dados;
END LOOP;
RETURN 'OK';
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION formula_cont_nv(integer, integer, integer, integer)
OWNER TO alphak_gp;
Pergunta
Alphak
Não estou coneguindo resolver o erro abaixo que ocorre em uma função PL/pgSQL que estou criando
Função que está ocorrendo o erro:Obrigado pela atenção
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.