buenas, estoy tratando de obtener múltiples consultas de una función, en sql server es fácil, en un procedimiento almacenado pones los select que deseas y te aparecen todas las consultas por separado al mismo tiempo al momento de ejecutar el procedimiento, necesito la misma funcionalidad en postgres pero no he podido hasta el momento :S. alguien me podría dar una mano al respecto
Re: multiples consulta en una función
Dom, 30/10/2011 - 11:47 — doctoreHola subzero1331.
Nunca he trabajado con SQL Server, de manera que desconozco la funcionalidad de la que hablas. Cuando dices:
en un procedimiento almacenado pones los select que deseas y te aparecen todas las consultas por separado al mismo tiempo al momento de ejecutar el procedimiento
¿Te refieres a que si pongo 2 consultas a tablas diferentes (trayendo datos distintos en cada una), cuando ejecuto el procedimiento, lanzará las 2 de manera secuencial, devolviendo sus respectivos resultados, que recibirá quien ejecute el procedimiento almacenado, como si hubiese ejecutado una sola consulta? Es decir:
¿Recibiré?:
Si es así, no conozco una "equivalencia literal" de esa funcionalidad en PostgreSQL. Lo que sí puedes hacer es, unificar las consultas en una sola utilizando UNION, lo que implica que tendrías que "arreglarla" para que devolviesen el mismo número de parámetros y del mismo tipo.
O si, por el contrario, es preciso que sea un procedimiento almacenado ya que existe "codigo que no podría ir directamente en SQL": condiciones para lanzar una u otra consulta, etc. Podrías emplear el siguiente "esqueleto de procedimiento almacenado":
CREATE TABLE informacion_a ( id integer, codigo character varying(10), descripcion character varying(255) ) CREATE TABLE informacion_b ( id integer, valor double precision, nombre character varying(255) ) CREATE OR REPLACE FUNCTION doble_consulta() RETURNS TABLE(id integer, descripcion character varying) AS $BODY$ BEGIN RETURN QUERY SELECT a.id, a.descripcion FROM informacion_a a WHERE a.id > 2; RETURN QUERY SELECT b.id, b.nombre FROM informacion_b b WHERE b.id > 2; END; $BODY$ LANGUAGE plpgsql; select * from doble_consulta();Pudiendo añadir cualquier código plpgsql que necesites.
Un saludo.