Re: Mediante Funcion devolver Tabla

From: Gabriel Colina <colina_movil(at)yahoo(dot)com>
To: edwin gustavo enriquez arias <gustavo_enriquez_arias(at)hotmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Mediante Funcion devolver Tabla
Date: 2007-03-01 02:42:53
Message-ID: 939291.25260.qm@web34713.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


--- edwin gustavo enriquez arias
<gustavo_enriquez_arias(at)hotmail(dot)com> escribió:

> Holas amigos listeros, bueno he aquí nuevamente con
> la duda
>
>
>
> Como puedo hacer para que por medio de una funcion
> pueda devolver una tabla
> con sus datos;
>

Edwin, esta funcion es una de tantas que me devuelve
los datos, segun los parametros de id articulo, fecha
y local.
Te puse una sencilla y una compleja para que veas, aca
lo importante
es SETOF "central"."cficha_articulo", en este caso
cficha_artculo es una consulta de un esquema central,
podria ser una tabla tambien y debe contener todos los
campos que en la funcion se mencionen.

La simple trabaja con la misma consulta o tabla

CREATE OR REPLACE FUNCTION
"central"."fnc_ficha_articulo" (idart text, dfecha
date, nlocal integer) RETURNS SETOF
"central"."cficha_articulo" AS
$body$
SELECT * from central.cficha_articulo
where id_articulo=idart and id_local=nlocal and
fecha >= dfecha
ORDER BY
cficha_articulo.id_articulo,cficha_articulo.fecha,cficha_articulo.id_lin;
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY
INVOKER;

2 trabaja con unas consultas distintas a
central.cficha_articulo, pero devuelve los mismos
campos.

CREATE OR REPLACE FUNCTION
"central"."fnc_ficha_articulo" (idart text, dfecha
date, nlocal integer) RETURNS SETOF
"central"."cficha_articulo" AS
$body$
SELECT cmovimientos_stock.id_local,
cmovimientos_stock.sucursal,
cmovimientos_stock.id_lin,
cmovimientos_stock.documento,
cmovimientos_stock.empresa, cmovimientos_stock.serie,

cmovimientos_stock.numero, cmovimientos_stock.fecha,
cmovimientos_stock.id_articulo,
cmovimientos_stock.entradas,
cmovimientos_stock.salidas,
(sum(cmovimientos_stock1.entradas) -
sum(cmovimientos_stock1.salidas)) AS saldos
FROM central.cmovimientos_stock,
central.cmovimientos_stock1
WHERE (((cmovimientos_stock.fecha >
cmovimientos_stock1.fecha) AND
((cmovimientos_stock.id_articulo)::text =
(cmovimientos_stock1.id_articulo)::text)) OR
(((cmovimientos_stock.fecha =
cmovimientos_stock1.fecha) AND
((cmovimientos_stock.id_articulo)::text =
(cmovimientos_stock1.id_articulo)::text)) AND
(cmovimientos_stock.id_lin >=
cmovimientos_stock1.id_lin))) and
cmovimientos_stock.id_articulo = $1 and
cmovimientos_stock1.id_articulo = $1
and CASE WHEN $3 = 0 THEN
cmovimientos_stock.id_local >= $3
ELSE cmovimientos_stock.id_local = $3 END and CASE
WHEN $3 = 0 THEN cmovimientos_stock1.id_local >= $3

ELSE cmovimientos_stock1.id_local = $3 END and
cmovimientos_stock.fecha >= $2
GROUP BY cmovimientos_stock.id_local,
cmovimientos_stock.sucursal,
cmovimientos_stock.id_articulo,
cmovimientos_stock.id_lin,
cmovimientos_stock.documento,
cmovimientos_stock.empresa,
cmovimientos_stock.serie,
cmovimientos_stock.numero, cmovimientos_stock.fecha,
cmovimientos_stock.entradas,
cmovimientos_stock.salidas,
cmovimientos_stock.categoria_empresa
ORDER BY cmovimientos_stock.id_articulo,
cmovimientos_stock.fecha, cmovimientos_stock.id_lin;
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY
INVOKER;

Esperando te sirva y a las ordenes por cualquier
consulta.

Atte.
Gabriel Colina

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Colina 2007-03-01 02:47:07 Re: como retornar el resultado de la consulta
Previous Message Gabriel Colina 2007-03-01 02:29:38 Re: DSN + DTS + PostgreSQL OT