Re: Se puede hacer ?

From: "Raul Andres Duque" <ra_duque(at)yahoo(dot)com(dot)mx>
To: "Gunnar Wolf" <gwolf(at)gwolf(dot)org>
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 15:05:13
Message-ID: 003c01c88c2e$22867300$5800a8c0@amadeus.net.co
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


----- Original Message -----
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>
Sent: Friday, March 21, 2008 8:33 PM
Subject: Re: [pgsql-es-ayuda] Se puede hacer ?

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

Ahí estaba mi duda ... en SIEMPRE almacenas un tipo text y haces CAST. Lo
que abría que mejorarle a esta implementación "de 5 minutos" sería que si la
tabla temporal no existe la cree.

Atentamente,

RAUL DUQUE
Bogotá, Colombia

> 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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Raul Andres Duque 2008-03-22 15:12:07 Re: Probado 8.3.1 con VISTA
Previous Message leonel 2008-03-22 03:35:48 Re: Error compilando 8.3.1