Skip site navigation (1) Skip section navigation (2)

Como ejecuto una función set of record desde consola

From: ALFONSO REYES <alfonsoreyescruz(at)hotmail(dot)com>
To: lista ayuda postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Como ejecuto una función set of record desde consola
Date: 2009-04-21 02:30:12
Message-ID: SNT113-W46A5B646F1CF7A1C419154DF770@phx.gbl (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
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'VOLATILECALLED ON NULL INPUTSECURITY INVOKERCOST 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...


                                                             ^




_________________________________________________________________
Drag n’ drop—Get easy photo sharing with Windows Live™ Photos.

http://www.microsoft.com/windows/windowslive/products/photos.aspx

Responses

pgsql-es-ayuda by date

Next:From: Lennin CaroDate: 2009-04-21 04:57:41
Subject: Re: Oracle compra SUN
Previous:From: Ernesto LozanoDate: 2009-04-20 21:55:34
Subject: Re: oracle compro sun que opinan?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group