Re: mostrar resultado del cursor.

From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
To: "Gabriel Hermes Colina Zambra" <hermeszambra(at)yahoo(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: mostrar resultado del cursor.
Date: 2008-02-22 04:49:37
Message-ID: c2d9e70e0802212049v35e07ac5vc0e3e710c5c249d6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Thu, Feb 21, 2008 at 10:50 PM, Gabriel Hermes Colina Zambra
<hermeszambra(at)yahoo(dot)com> wrote:
> Hola listeros
>
> Tengo esta funcion y quiero que me devuelva el cursor
> resultante
>
> El resultado que me arroja es unnamed portal2
>
> Tambien se que pasando por parametros podria forzar el
> nombre de ese cursor.
>
> Lo cierto que con fetch all in o fetch all for
>
> no me duevelve lo que espero
>
>
> aca paso la funcion a ver que me pueden sugerir
>
> CREATE OR REPLACE FUNCTION "public"."pivot_table"
> (tvista_tabla text, tcampo1 text, tcampo2 text,
> tcampo3 text) RETURNS "pg_catalog"."refcursor" AS
> $body$
> DECLARE
> tvista_tabla alias for $1;
> tcampo1 alias for $2;
> tcampo2 alias for $3;
> tcampo3 alias for $4;
> tcuerpo text;
> mvista RECORD;
> ref refcursor;
> nI integer;
> BEGIN
> nI:=0;
> tcuerpo:='';
> FOR mvista IN execute 'SELECT '|| tcampo2 ||' as
> campo2 FROM '|| tvista_tabla
> || ' GROUP BY '|| tcampo2 || ' ORDER BY ' || tcampo2
> LOOP
> nI:=nI + 1;
> tcuerpo:=tcuerpo || ' sum(case when ' || tcampo2 ||
> '=' || mvista.campo2 || ' then ' || tcampo3 || ' else
> 0 end) as ' || mvista.campo2 || nI || ',';
> END LOOP;

o mucho me equivoco o este FOR no hace nada util...

> open ref for execute 'select
> id_empresa,sum(importe_con_impuestos) as pepe from '
> || tvista_tabla || ' GROUP BY '|| tcampo1 || ' ORDER
> BY ' || tcampo1;
> RETURN ref;
> END;
> $body$
> LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT
> SECURITY INVOKER;
>

como tu mismo dijiste puedes pasar un parametro para forzar el nombre,
pero si quieres usar el generado automaticamente

FETCH ALL IN "<unnamed cursor 2>";

fijate que es "unnamed cursor" no "unnamed portal", el numero esta
separado por un espacio y el nombre va entre comillas y <> (no se como
decirles)

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2008-02-22 04:51:57 Re: Error al conectarse con PostgreSQL
Previous Message Wolfgang Rodriguez 2008-02-22 04:43:17 Clave usuario postgres