From: | "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | return query |
Date: | 2014-06-04 14:57:50 |
Message-ID: | CANm+PCD_MX7rhiWE3wVMO-M01FGem00dySJ1xLF6Kqque5B-XQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Buenas, una función plpgsql me está dando dolores de cabeza y necesito
debuguear lo que está haciendo.
Es muy simple, tiene un return query con un select que le paso algunos
parámetros.
Concretamente la pregunta es:
Existe alguna forma de que vea el select que ejecuta la función tal cual
como la ejecuta?
Desde ya muchas gracias.
Por si quieren ver la función: El código es:
CREATE OR REPLACE FUNCTION nacer.fn_embarazadas_sin_control(IN pt_periodo
timestamp without time zone, IN pi_cant_controles integer DEFAULT 3,
pi_semanas integer DEFAULT 34)
RETURNS TABLE(pt_nombreefector text, pv_clavebeneficiario character
varying, pv_afitipodoc character varying,
pv_afidni character varying, pv_afiapellido character varying, pv_afinombre
character varying, pc_aficlasedoc character,
pc_activo character, pv_cuieefectorasignado character varying,
pt_fechainscripcion timestamp without time zone,
pi_afitipocategoria smallint, pt_fechadiagnosticoembarazo timestamp without
time zone, pi_semanasembarazo integer,
pt_periodo timestamp without time zone, pi_controles bigint ) AS
$BODY$
BEGIN
RETURN QUERY
SELECT
efe_conv.nombreefector,
clavebeneficiario,
afitipodoc,
afidni,
afiapellido,
afinombre,
aficlasedoc,
activo,
cuieefectorasignado,
fechainscripcion,
afitipocategoria,
fechadiagnosticoembarazo,
semanasembarazo,
periodo,
count(id) cuenta
FROM
nacer.historicotemp h
inner join nacer.efe_conv on h.cuieefectorasignado = efe_conv.cuie
left join facturacion."trz_I_II" t on h.afidni = t.nrodoc
WHERE
h.afitipocategoria = 1 AND
h.activo = 'S' AND
((((date_part('DAY', (pt_periodo::timestamp -
h.fechadiagnosticoembarazo::timestamp))) / 7)+ h.semanasembarazo) >
pi_semanas) AND
(h.periodo = pt_periodo::timestamp) AND
t.fechactrl > (pt_periodo::timestamp - (pt_periodo::timestamp -
h.fechadiagnosticoembarazo::timestamp - (h.semanasembarazo*7) * interval '1
days'))
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14
having count(id) < pi_cant_controles;
raise notice current_query();
END;
$BODY$
LANGUAGE plpgsql
Guillermo Villanueva
From | Date | Subject | |
---|---|---|---|
Next Message | Guillermo E. Villanueva | 2014-06-04 15:01:04 | Re: return query |
Previous Message | Sergio Sinuco | 2014-06-04 14:08:40 | Re: alguna experiencia con postgresql XC |