CAmbia el nombre de los parametros... El día 23 de octubre de 2008 19:31, Edwin Quijada <[EMAIL PROTECTED]> escribió: > > > > *-------------------------------------------------------* > *-Edwin Quijada > *-Developer DataBase > *-JQ Microsistemas > *-809-849-8087 > > * " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de lo > comun" > *-------------------------------------------------------* > > >> Date: Thu, 23 Oct 2008 12:24:33 -0500 >> From: [EMAIL PROTECTED] >> To: [EMAIL PROTECTED] >> Subject: Re: [pgsql-es-ayuda] Retornando un select ...diferencias de >> Postgres y MSSQL >> CC: pgsql-es-ayuda@postgresql.org >> >> On 10/23/08, Edwin Quijada wrote: >>> >>> Me ha tocado trabajar en estos dias con MSSQL y he visto algo interesante y >>> es que los Store procedure pueden retornar un set de datos , un select, >>> pero con la desventaja de que este no puede ser usado en un select. >>> A raíz de esto me gustaría hacer una pregunta a los que están cerca del >>> código Postgres, Alvaro y Jaime, cual es la razon mas técnica de porque >>> Postgres no puede hacer esto,retornar una selección, sin tener que declarar >>> un tipo. >>> Esto me asalta porque me lo han preguntado varias veces y la verdad la >>> respuesta que he dado no se si me convence mucho o estoy equivocado. >>> >> >> si puedes... >> >> CREATE FUNCTION fsetdatos() RETURNS SETOF record AS >> begin >> return query select * from tabla; >> return; >> end; >> LANGUAGE plpgsql; >> >> >> claro que en el select deberas hacer algo como: "select * from >> fsetdatos(campo1 tipo1[, ...])" >> >> o puedes declarar los tipos como parametros OUT >> >> CREATE FUNCTION fsetdatos(out campo1 tipo1[, ...]) RETURNS SETOF record AS >> begin >> return query select * from tabla; >> return; >> end; >> LANGUAGE plpgsql; >> >> y en el select solo haces: "select * from fsetdatos()" >> > estoy tratando de hacer lo que dices Jaime pero obtengo lo ssigte: > > CREATE or replace FUNCTION fsetdatos(out seqnum INTEGER,out acd SMALLINT, > out row_date date) RETURNS SETOF record AS > $body$ > begin > return query select seqnum,acd,row_date from cms.call_rec limit 5; > return; > end; > $body$ > LANGUAGE plpgsql; > > select * from fsetdatos() > > Cuando hago esto solo consigo valores nulos por todos lados.Es decir, todo lo > que selecciona la funcion son valores nulos que no se de donde provienen > porque al hacer el select solamante consigo la data como es. > > > > > > > >> -- >> Atentamente, >> Jaime Casanova >> Soporte y capacitación de PostgreSQL >> Asesoría y desarrollo de sistemas >> Guayaquil - Ecuador >> Cel. +59387171157 >> -- >> TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo >> agradecerán > > _________________________________________________________________ > Get Windows Live and get whatever you need, wherever you are. Start here. > http://www.windowslive.com/default.html?ocid=TXT_TAGLM_WL_Home_082008-- > TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net >
-- Emanuel Calvo Franco Syscope Postgresql DBA BaPUG Member -- TIP 1: para suscribirte y desuscribirte, visita http://archives.postgresql.org/pgsql-es-ayuda