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
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 |