return query

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

Responses

Browse pgsql-es-ayuda by date

  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