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
>
>
>
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 |