Estimada Lista Espero me puedan ayudar indicándome como se debe llamar a una función record desde otra función, a continuación coloco las dos funciones Cualquier ayuda es bienvenida. Mil gracias de antemano... /*********** Función record***********/ CREATE OR REPLACE FUNCTION "danmaf"."gen_obt_estab_punto" (p_id_empresa integer, p_unidad_adm varchar, out p_establecimiento varchar, out p_punto varchar, out p_autorizacion varchar) RETURNS record AS$body$DECLARE v_establecimiento varchar(3); v_punto varchar(3);BEGIN SELECT fa.establecimiento,fa.punto--,fa.autorizacion into v_establecimiento,v_punto FROM danmaf.gen_documento gd,danmaf.fac_autorizaciones fa WHERE gd.id_documento=fa.id_documento and gd.nombre='FACTURA' and gd.id_empresa=p_id_empresa and fa.cod_unidad=p_unidad_adm;END;$body$LANGUAGE 'plpgsql'VOLATILECALLED ON NULL INPUTSECURITY INVOKERCOST 100;/*********** Fin Función record***********/
/**************** Función desde la cual se debe referenciar*********************// CREATE OR REPLACE FUNCTION "danmaf"."fac_sp_reg_cab_factura" (p_id_factura integer, p_id_empresa integer, p_num_factura integer, p_fecha_emison date, p_fecha_envio date, p_estado char, p_fact_fisica varchar, p_usuario_crea varchar, p_subtotal numeric, p_impuestos numeric, p_guia_remision varchar, p_obs varchar, p_unidad_adm varchar, p_id_cliente integer, p_cur_resultado "pg_catalog"."refcursor") RETURNS "pg_catalog"."refcursor" AS$body$ declare v_fact_fisica integer; v_id_factura integer; v_establecimiento varchar(3); v_punto varchar (3); v_autorizacion VARCHAR(32); -- v_num_factura, begin if p_id_factura is null then select count(1) into v_fact_fisica from danmaf.fac_cab_factura cf where cf.fact_fisica=p_fact_fisica and cf.id_empresa=p_id_empresa and cf.unidad_adm=p_unidad_adm; if v_fact_fisica=0 then /*************Este sql es el de la función con el record**************/ SELECT fa.establecimiento,fa.punto,fa.autorizacion into v_establecimiento,v_punto,v_autorizacion FROM danmaf.gen_documento gd,danmaf.fac_autorizaciones fa WHERE gd.id_documento=fa.id_documento and gd.nombre='FACTURA' and gd.id_empresa=p_id_empresa and fa.cod_unidad=p_unidad_adm; /*****************************/ --Aqui ejecuto la función pero me da error --danmaf.gen_obt_estab_punto(p_id_empresa,p_unidad_adm) as (v_establecimiento,v_punto,v_autorizacion); --Fin INSERT INTO danmaf.fac_cab_factura ( id_empresa, num_factura, fecha_emision, fecha_envio, estado, fact_fisica, usuario_crea, fecha_crea, subtotal, impuestos, guia_remision, autorizacion, establecimiento, punto, obs, unidad_adm, id_cliente ) VALUES ( p_id_empresa, p_num_factura, p_fecha_emision, p_fecha_envio, p_estado, v_establecimiento||v_punto||to_char(p_num_factura), p_usuario_crea, p_fecha_crea, p_subtotal, p_impuestos, p_guia_remision, v_autorizacion, v_establecimiento, v_punto, p_obs, p_unidad_adm, p_id_cliente ) returning id_factura into v_id_factura; open p_cur_resultado FOR select '-1' as codigo,v_id_factura as id_factura,'Información registrada satisfactoriamente...'as descripcion; return p_cur_resultado; else open p_cur_resultado FOR select '-1404' as codigo, 'Ya existe el número de factura física registrado'; return p_cur_resultado; end if; else UPDATE danmaf.fac_cab_factura SET id_cliente = p_id_cliente, fecha_factura = p_fecha_factura, fecha_max_cobro = p_fecha_max_cobro, estado = p_estado, fact_fisica = p_fact_fisica WHERE id_empresa = p_id_empresa and unidad_adm = p_unidad_adm and id_factura = p_id_factura; open p_cur_resultado FOR select '-1' as codigo, p_id_factura as id_factura,'Información registrada satisfactoriamente...'as descripcion; return p_cur_resultado; end if; end;$body$LANGUAGE 'plpgsql'VOLATILECALLED ON NULL INPUTSECURITY INVOKERCOST 100; _________________________________________________________________ Show them the way! Add maps and directions to your party invites. http://www.microsoft.com/windows/windowslive/products/events.aspx