Re: error en funcion

From: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
To: Marco Vinicio Jimenez Rojas <viniciojr(at)gmail(dot)com>
Cc: "alvherre(at)alvh(dot)no-ip(dot)org" <alvherre(at)alvh(dot)no-ip(dot)org>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: error en funcion
Date: 2011-12-07 22:55:38
Message-ID: 1323298538.25287.YahooMailNeo@web27401.mail.ukl.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Yo lo hice asi:

create or replace function ingresoPago(p_transp integer, p_fechax date, p_montoT integer, p_montoV integer,
p_montoP integer, p_estadox integer) returns integer as
$BODY$
DECLARE lv_viaje integer = 0;
begin
insert into pago_viajes(transportista, fecha,monto_total,monto_vales,
monto_pago, estado) values(p_transp, p_fechax,p_montoT,p_montoV, p_montoP,
p_estadox) returning idpago_viajes into lv_viaje;
return lv_viaje;
end;
$BODY$
language 'plpgsql';

Creo que esto aclara tu duda. No olvides que los parametros y las variables de la función, por revisión de codigo, deben tener un prefijo. Además para facilitar la modificación de la función, coloca "or replace" en la declaración de la función.

>________________________________
> De: Marco Vinicio Jimenez Rojas <viniciojr(at)gmail(dot)com>
>Para: Rodrigo Gonzalez <rjgonzale(at)estrads(dot)com(dot)ar>
>CC: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>; Alejandro Carrillo <fasterzip(at)yahoo(dot)es>; Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
>Enviado: miércoles 7 de diciembre de 2011 17:31
>Asunto: Re: [pgsql-es-ayuda] error en funcion
>
>
>ya logre resolver el asunto de la funcion haciendo unas correcciones en las sugerencias que me dio alvaro y quitando esa asignacion. pero mi pregunta es. si el insert asi como esta me devuelve el valor del seria con el returnig como hago para capturarlo en una variable?
>
>
>
>insert into pago_viajes(transportista, fecha,monto_total,monto_vales,
>                     monto_pago, estado) values(transp, fecha,montoT,montoV, montoP,
>                       estado)returning idpago_viajes;
>
>
>
>Dejo aqui la estructura de la tabla
>
>CREATE TABLE pago_viajes
>(
>  idpago_viajes serial NOT NULL,
>  transportista integer NOT NULL,
>  fecha date,
>  monto_total numeric,
>  monto_vales numeric,
>  monto_pago numeric,
>  estado integer,
>  CONSTRAINT pago_viajes_pkey PRIMARY KEY (idpago_viajes)
>)
>
>
>muestro aqui la funcion tal como esta y que si funciona pero no puedo campurar el serial
>
>create function ingresoPago(transp integer, fechax date, montoT integer, montoV integer,
>montoP integer, estadox integer) returns integer as
>$BODY$
>DECLARE viaje integer = 0;
>begin
>insert into pago_viajes(transportista, fecha,monto_total,monto_vales,
>monto_pago, estado) values(transp, fechax,montoT,montoV, montoP,
>estadox)returning idpago_viajes;
>
>return viaje;
>end;
>$BODY$
>language 'plpgsql';
>
>
>
>
>
>
>
>
>
>El 7 de diciembre de 2011 16:14, Rodrigo Gonzalez <rjgonzale(at)estrads(dot)com(dot)ar> escribió:
>
>On 12/07/2011 06:53 PM, Alvaro Herrera wrote:
>>
>>Excerpts from Alejandro Carrillo's message of mié dic 07 18:23:47 -0300 2011:
>>>
>>>no debería ser:
>>>>
>>>>viaje := insert into pago_viajes(transportista, fecha,monto_total,monto_vales,
>>>>                     monto_pago, estado) values(transp, fecha,montoT,montoV, montoP,
>>>>                       estado)returning idpago_viajes;
>>>>
>>>>faltan los 2 puntos para la asignación del campo serial
>>>>
Tanto = como := sirven para la asignación en plpgsql.
>>>
>>>
Que yo sepa insert no devuelve...
>>
>>tenes que cambiar por
>>
>>
>>insert into pago_viajes(transportista, fecha,monto_total,monto_vales,
>>                    monto_pago, estado) values(transp, fecha,montoT,montoV, montoP,
>>
                      estado) returning idpago_viajes into viaje;
>>
>>O sea, usar into<variable>
>>
>>Saludos
>>
>>Rodrigo
>>
>>
>>
>
>
>--
>
>-----------------------
>MVJR
>
>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message ruben avila galindo 2011-12-07 23:04:14 Uso de Cursores
Previous Message Marco Vinicio Jimenez Rojas 2011-12-07 22:31:29 Re: error en funcion