El día 20 de abril de 2009 23:30, ALFONSO REYES <alfonsoreyesc...@hotmail.com> escribió: > Estimada Lista > Mi pregunta es sencilla, tengo una función de tipo return set of record con > 2 parámetros de ingreso int y char : > CREATE OR REPLACE FUNCTION "danmaf"."gen_obt_estab_punto_dos" (p_id_empresa > integer, p_unidad_adm varchar) RETURNS SETOF record AS > $body$ > DECLARE > v_establecimiento varchar(3); > v_punto varchar(3); > v_rec_salida record; > BEGIN > for v_rec_salida in > (SELECT fa.establecimiento,fa.punto,fa.autorizacion > FROM danmaf.gen_documento gd,danmaf.fac_autorizaciones fa > WHERE gd.id_documento=fa.id_documento > and gd.nombre='FACTURA' > and gd.id_empresa=p_id_empresa > and fa.cod_unidad=p_unidad_adm) > loop > return next v_rec_salida; > end loop; > return; > END; > $body$ > LANGUAGE 'plpgsql' > VOLATILE > CALLED ON NULL INPUT > SECURITY INVOKER > COST 100 ROWS 1000; > > > Según lo que he leído en la red y una vez que me ayudo Alvaro Herrera, creo > que estoy haciendo lo correcto: > INTERNET DICE QUE SE EJECUTA ASI: > SELECT "danmaf"."gen_obt_estab_punto_dos"(4,'1') as f(col1 char,col2 char > ,col3 char ); > > SELECT "danmaf"."gen_obt_estab_punto_dos"(4,'1') as > f(col1 text,col2 text ,col3 text ); > > RESULTADO ERROR : > ERROR: syntax error at or near "(" > LINE 1: ...ECT "danmaf"."gen_obt_estab_punto_dos"(4,'1') as f(cola text... > ALVARO ME INDICO EN ESTE CORREO: > > ALFONSO REYES escribió: > > Marcos, muchas gracias por tú ayuda, pero a lo que me refiero es como > debería > jecutarla desde el query builder, por ejemplo a las funciones que retirnan > un refcursor se las ejecuta asi: Begin; select funcion('resp_ref_cursor'); > fecth all in "resp_ref_cursor"; commit; > > En cambio cuando es un afunción de tipo record como la ejecuto desde el > query > builder.. > > select * from function( ... ) > > Si es "setof record" entonces tienes que especificar el tipo del record: > > select * from function( ... ) as f(a int, b text, c text, ...) > > -- Alvaro Herrera http://www.PlanetPostgreSQL.org/ "I'm impressed how > quickly you are fixing this obscure issue. I came from MS SQL and it would > be hard for me to put into words how much of a better job you all are doing > on [PostgreSQL]." Steve Midgley, > http://archives.postgresql.org/pgsql-sql/2008-08/msg00000.php > > -- TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo > agradecerán > > Para terminar cuando la ejecuto desde el EXECUTE de la función del SQL > MANAGER FOR POSTGRES 2007 SI FUNCIONA !!! Y PRIMERO ME PIDE LAS COLUMNAS y > luego obtengo el resultado, > > por favor quisiera saber que estoy haciendo mal...
Retorna un set of record, SELECT * FROM "danmaf"."gen_obt_estab_punto_dos" (1, 'empresa'); No mandes en formato HTML el mail por favor. -- Emanuel Calvo Franco Sumate al ARPUG ! (www.postgres-arg.org - www.arpug.com.ar) ArPUG / AOSUG Member Postgresql Support & Admin -- TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net