Re: Se puede hacer ? - Aca tenes un ejemplito con una funcion usando lenguaje sql

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/

In response to

Browse pgsql-es-ayuda by date

  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.