From: | ALFONSO REYES <alfonsoreyescruz(at)hotmail(dot)com> |
---|---|
To: | lista ayuda postgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Ayuda con función record referenciada desde otra función |
Date: | 2009-04-14 02:09:57 |
Message-ID: | BLU148-W2E0D30FA81210A880CB40DF7C0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Laura Martinelli | 2009-04-14 12:32:06 | Finalizar sesión de usuario activa |
Previous Message | FRANZ RICHARD MARIN VASQUEZ | 2009-04-13 22:40:30 | RE: ayuda con postgres |