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