From: | Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Jaime Sierra Gattorno <jhsgattorno(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Se puede hacer ? - Aca tenes un ejemplito con una funcion usando lenguaje sql |
Date: | 2008-03-18 18:08:46 |
Message-ID: | 260487.1840.qm@web63704.mail.re1.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
--- Alvaro Herrera <alvherre(at)commandprompt(dot)com>
escribió:
> Jaime Sierra Gattorno escribió:
>
> > Lo único que el usuario cambia el la fecha
> encerrada entre las lineas y
> > listo, pero como declaro variables en
> PostGresSQL?.
>
> No existen las "variables" en el lenguaje SQL.
> Puedes usarla en el
> lenguaje PL/pgSQL, pero éste sólo se puede usar para
> escribir funciones,
> como te mostró Calabaza. No existen los "bloques
> anónimos" ni se puede
> ejecutar directamente.
>
> > 2.- En MSSQL puedo declarar variables tipo TABLE,
> que serian tablas
> > temporales que existen solo para el usuario que
> ejecuta el quiery, al
> > terminar desaparecen, existe algo parecido en
> PostGresSQL?.
>
> Puedes crear funciones que retornen un tipo SETOF
> <algo>, o bien
> declarar funciones con multiples parametros OUT y
> luego ejecutar RETURN
> NEXT (sin parametros) repetidamente en una funcion.
> No necesitas
> declarar variables de tipo TABLE; simplemente usas
> el resultado de la
> funcion en una consulta, por ejemplo (la forma mas
> simple) "SELECT *
> FROM mi_funcion()".
>
> --
> Alvaro Herrera
> http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom
> Development, 24x7 support
> --
> TIP 9: visita nuestro canal de IRC #postgresql-es en
> irc.freenode.net
>
Bien veamos, esta funcion podria referir a una tabla,
en este caso a la consulta "central"."cvtas_clientes"
La funcion recibe dos parametros, nidcliente y dfecha
actuando sobre la consulta y devolviendo las filas del
filtro where, yo lo uso con ADO recordset y tiene flor
de potencia. para llamarla
select * from
central.fnc_vta_x_cliente(123l,'2008-01-01');
CREATE OR REPLACE FUNCTION
"central"."fnc_vta_x_cliente" (nidcliente integer,
dfecha date) RETURNS SETOF "central"."cvtas_clientes"
AS
$body$
select * from central.cvtas_clientes
where id_empresa = $1 and fecha >= $2
order by fecha desc
$body$
LANGUAGE 'sql' VOLATILE RETURNS NULL ON NULL INPUT
SECURITY INVOKER;
No varia mucho sobre transact sql, pero desde mi punto
de vista es mas eficiente y comodo cuando te
acostumbras.
Atte.
Gabriel Colina.
____________________________________________________________________________________
¡Capacidad ilimitada de almacenamiento en tu correo!
No te preocupes más por el espacio de tu cuenta con Correo Yahoo!:
http://correo.espanol.yahoo.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Raul Andres Duque | 2008-03-18 18:22:16 | Re: Error al instalar 8.3 en Windows Vista |
Previous Message | Pablo Braulio | 2008-03-18 17:45:05 | Re: Convertir time a numero. |