From: | Daniel Soto <daniel(dot)soto2k(at)gmail(dot)com> |
---|---|
To: | Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com> |
Cc: | "Miguel \"Rodríguez\" Penabad" <penabad(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: 2 preguntas acerca de fechas |
Date: | 2007-07-09 11:49:39 |
Message-ID: | 469220D3.3080308@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Gabriel, lo que quiero decir con variable local es esto
create function mi_funcion() returns void as $$
declare
iv int; <---- variable local (para cualquier proposito)
begin
... bla bla...
end;
$$ language 'plpgsql';
ahora, podrian decirme "hey, pero para que quieres eso? definele
parametros a la funcion y listo", pues no, hay veces en que las
funciones o procedimientos necesitan tener cierta logica para lo cual se
necesita declarar algunas variables locales para llevar a cabo esa
logica. Y hasta ahora no he sabido como plpgsql puede brindarme esa
capacidad (sin que me arroje los errores que mencione antes, claro :) )
Gabriel Hermes Colina Zambra escribió:
> --- Daniel Soto <daniel(dot)soto2k(at)gmail(dot)com> escribió:
>
>
>> Tambien estoy interesado en como hacer eso, de
>> devolver varios registros
>> con pgplsql. Veran lo que pasa es que me importa
>> mantener la
>> "homogeneidad" de mi sistema, es decir, para
>> funciones que devuelven
>> multiples registros usar sql mientras que para las
>> demas (por ejemplo
>> insercion de registros) usar plpgsql. No lo se, en
>> mi opinion no seria
>> muy complicado tener algunas funciones en un
>> lenguaje y otras con otro?
>> Digo, en otras bases de datos se puede hacer
>> perfectamente sin tanta
>> "complicacion" (bueno, considerando como
>> "complicacion" algo que aun no
>> domino bien, lo admito).
>>
>> El problema es que con funciones en sql no puedo
>> declarar variables
>> locales, y tengo algunos procedimientos que necesito
>> migrar, que tienen
>> un poco de logica dentro, entonces, o uso plpgsql
>> (que lo estoy
>> encontrando mas robusto) o uso sql, pero este ultimo
>> no deja usar
>> variables locales, segun me han contado.
>>
>>
> Pues ahora no entiendo a que te referis con variables
> locales.
> Claro que en el lenguaje sql no podes hacer ningun
> procedimiento.
> Pero esta funcion de ejemplo que a continuacion te
> paso, me permite pasarle parametros, para usarlos por
> ejemplo en el where o en el having, y a cambio me
> devuelve un recordset del conjunto de registros de la
> vista central.cficha_articulo que cuenta con rules, y
> que ademas ese conjunto de registros me queda
> actualizable a travez de las rules, entonces a travez
> de mi aplicacion, VB6 de paso por un DSN, los puedo
> actualizar en las correspondientes tablas de la
> consulta, desde cualquier control, asociado a un
> dataenviroment o un ado que llama a esta funcion
> pasandole los parametros.
> Muy sencillo y simple, nada complicado.
> Los insert update y delete si, normalmente los hago
> con pg/plsql.
> Pero en todos ellos pg/plsql o sql puedo pasar
> parametros.
>
> Bueno aca esta el ejemplito.
>
> CREATE OR REPLACE FUNCTION
> "central"."fnc_ficha_articulo" (idart text, dfecha
> date, idlocal integer) RETURNS SETOF
> "central"."cficha_articulo" AS
> $body$
> SELECT cmovimientos_stock.id_local,
> cmovimientos_stock.sucursal,
> cmovimientos_stock.id_lin,
> cmovimientos_stock.documento,
> trim(cmovimientos_stock.empresa) as empresa,
> cmovimientos_stock.serie,
> cmovimientos_stock.numero,
> cmovimientos_stock.fecha::date,
> cmovimientos_stock.id_articulo,
> cmovimientos_stock.entradas,
> cmovimientos_stock.salidas
> FROM central.cmovimientos_stock
> WHERE cmovimientos_stock.id_articulo = $1
> and CASE WHEN $3 = 0 THEN cmovimientos_stock.id_local
>
>> = $3
>>
> ELSE cmovimientos_stock.id_local = $3 END
> and
> cmovimientos_stock.fecha >= $2
> ORDER BY cmovimientos_stock.id_articulo,
> cmovimientos_stock.fecha, cmovimientos_stock.id_lin;
> $body$
> LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY
> INVOKER;
>
> Bien y con el ejemplo del CASE hasta un poquito de
> logica hay.
>
> Atte.
> Gabriel Hermes Colina Zambra.
>
> __________________________________________________
> Correo Yahoo!
> Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
> Regístrate ya - http://correo.espanol.yahoo.com/
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Daniel Soto | 2007-07-09 11:52:51 | Re: 2 preguntas acerca de fechas |
Previous Message | José Ruiz aguilera | 2007-07-09 08:05:19 | Re: ayuda con DBI-LINK |