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