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