From: | Edwin Quijada <listas_quijada(at)hotmail(dot)com> |
---|---|
To: | Roberto Rodríguez Pino <rodpin(at)gmail(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: declarando una variable en funcion |
Date: | 2008-06-18 16:16:24 |
Message-ID: | BLU137-W125EE6FC8163554D65D920E3AB0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Sorry, con copia a la lista ahora
> Date: Wed, 18 Jun 2008 17:08:12 +0200
> From: rodpin(at)gmail(dot)com
> To: pgsql-es-ayuda(at)postgresql(dot)org
> Subject: [pgsql-es-ayuda] declarando una variable en funcion
>
> Hola a todos!
> Estoy tratando de escribir la siguiente funcion. Si bien no esta en
> pgsql (esta en sql) no logro dar el como declarar una variable.
>
> CREATE OR REPLACE FUNCTION ingresarcosto(_idproveedor integer,
> _idarticulo character varying, _costoultimo double precision, _fecha
> date, _cantidad integer) RETURNS integer AS
> DECLARE
> costoTemp int;
> $BODY$
> costoTemp:= select costoultimo from costo where idarticulo=$2 and flag=true;
> insert into costo (idproveedor, idarticulo, costoultimo, fecha, cantidad)
> values ($1, $2, $3, $4, $5);
> update costo set flag=false where idarticulo=$2;
> update costo set flag=true where idcosto=(select
> currval('costo_idcosto_seq')::int);
> select currval('costo_idcosto_seq')::int;
>
> $BODY$
> LANGUAGE 'sql' VOLATILE;
>
> Al cargarla, me reclama en la linea de DECLARE. Alguien me puede echar
> una mano, ya que no he logrado dar con el problema en si.
> Saludos!
> Roberto
Las funcions en SQL no admiten declarqciones ynada de eso. Solo te permiten el standard sql
Asi que cambia el lenguaje a plpgsql y eso debera resolverte el problema
A ver:
> CREATE OR REPLACE FUNCTION ingresarcosto(_idproveedor integer, _idarticulo character varying, _costoultimo double precision, _fecha
> date, _cantidad integer) RETURNS integer AS
$BODY$
> DECLARE
> costoTemp int; --uN COSTO ENTERO??
CUR integer;
> BEGIN
select INTO costoTemp costoultimo from costo where idarticulo=$2 and flag=true;
> insert into costo (idproveedor, idarticulo, costoultimo, fecha, cantidad)
> values ($1, $2, $3, $4, $5);
> update costo set flag=false where idarticulo=$2;
> update costo set flag=true where idcosto=(select currval('costo_idcosto_seq')::int);
select INTO CUR currval('costo_idcosto_seq')::int;
RETURN(CUR);
>
> $BODY$
> LANGUAGE 'PLPGsql' VOLATILE;
Creo que puedes darle un vistazo desde ahi aunq hay un par de cosas q no las veo logicas
*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-809-849-8087
* " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de lo comun"
*-------------------------------------------------------*
> --
> visita mi weblog!
> http://trasto.hopto.org
> Softwarelibre(at)diinf
> http://softwarelibre.diinf.usach.cl
> --
> TIP 4: No hagas 'kill -9' a postmaster
_________________________________________________________________
Stop squinting -- view your photos on your TV. Learn more.
http://www.microsoft.com/windows/digitallife/default.mspx?deepLink=photos
From | Date | Subject | |
---|---|---|---|
Next Message | Luis D. García | 2008-06-18 16:18:44 | Re: Replicación Centralizada con Slony |
Previous Message | Edwin Quijada | 2008-06-18 16:07:20 | Herramienta de auditoria |