Re: Se puede hacer ?

From: Gunnar Wolf <gwolf(at)gwolf(dot)org>
To: Raul Andres Duque <ra_duque(at)yahoo(dot)com(dot)mx>
Cc: Oswaldo Hernández <listas(at)soft-com(dot)es>, Jaime Sierra Gattorno <jhsgattorno(at)gmail(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Se puede hacer ?
Date: 2008-03-22 01:33:57
Message-ID: 20080322013357.GB12416@cajita.gateway.2wire.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Raul Andres Duque dijo [Fri, Mar 21, 2008 at 12:48:26PM -0500]:
> >De esta forma si podrias hacer:
> >
> >select setvar('dFecha', '17/03/2008'::date);
> >
> >SELECT Sucursal, Sum(Ventas_Gravadas)
> > FROM Encabezado_Facturas
> > WHERE Fecha_Factura = getvar('dFecha')
> >
>
> Tienes el código de estas funciones setvar y getvar ??
>
> De momento no se me ocurre como hacerlas para que acepten un tipo de
> datos genérico ... tal vez con MUCHAS sobre cargas?

Es trivial :) No van probadas, pero si truenan, no hay mucho que modificar.

CREATE FUNCTION setvar(text, text) RETURNS bool AS $$
DECLARE
llave_usr ALIAS FOR $1;
valor_usr ALIAS FOR $2;
BEGIN
DELETE FROM variables WHERE llave = llave_usr;
INSERT INTO variables (llave, valor) VALUES (llave_usr, valor_usr);
RETURN 't';
END
$$ language 'plpgsql';

CREATE FUNCTION getvar(text) RETURNS text AS $$
DECLARE
llave_usr ALIAS FOR $1;
valor_usr text;
BEGIN
SELECT INTO valor_usr valor FROM variables WHERE llave = llave_usr;
IF NOT FOUND THEN
RETURN NULL;
END IF;
RETURN valor_usr;
END;
$$ language 'plpgsql';

Sí, tienes que ser un poco explícito al meterle datos - pero puedes
hacer los casts en la llamada:

SELECT setvar('bugs', 0::text);
SELECT getvar('bugs')::integer + 10;

Claro, no es a prueba de cañonazos, pero es una implementación de
cinco minutos ;-)

Saludos,

--
Gunnar Wolf - gwolf(at)gwolf(dot)org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ruben Guinez 2008-03-22 02:54:30 Re: Probado 8.3.1 con VISTA
Previous Message Raul Andres Duque 2008-03-21 17:48:26 Re: Se puede hacer ?