Hola chicos: Estoy buscando, en 8.3, algo como lo siguiente:

Una funcion que me permita convertir un row (resultante de una funcion
determinada) y me devuelva un array con los valores de las columnas
(casteado, digamos, a text), y no logro dar con la tecla.

Lo ideal seria que el recorset que reciba esta funcion pueda ser
generico, asi puedo utilizarlo para 'arraysear' resultados que provienen
de diferentes funciones. Se entiende?

Tambien podria ser una funcion que devuelva los campos concatenados,
pero de nuevo, tendria que ser generica para cualquier recordset que
esta funcion reciba.

Estoy en 8.3.

Pistas?

Gerardo

Search Discussions

  • Alvaro Herrera at Nov 26, 2010 at 9:52 pm

    Excerpts from Gerardo Herzig's message of vie nov 26 17:33:40 -0300 2010:
    Hola chicos: Estoy buscando, en 8.3, algo como lo siguiente:

    Una funcion que me permita convertir un row (resultante de una funcion
    determinada) y me devuelva un array con los valores de las columnas
    (casteado, digamos, a text), y no logro dar con la tecla.

    Lo ideal seria que el recorset que reciba esta funcion pueda ser
    generico, asi puedo utilizarlo para 'arraysear' resultados que provienen
    de diferentes funciones. Se entiende?
    Instala contrib/hstore y examina las funciones que provee. Al menos en
    9.0 puedes construir lo que quieres desde las piezas que hay ahí.

    En 8.3 hstore es harto más primitivo, pero quizás se pueda de todas formas.
    Si no, quizás puedas hacer un "backport" del hstore de 9.0 a 8.3 (creo
    que existe en pgfoundry, no estoy seguro).

    --
    Álvaro Herrera <[email protected]>
    The PostgreSQL Company - Command Prompt, Inc.
    PostgreSQL Replication, Consulting, Custom Development, 24x7 support
  • Gerardo Herzig at Nov 26, 2010 at 9:59 pm

    On 11/26/2010 06:51 PM, Alvaro Herrera wrote:
    Excerpts from Gerardo Herzig's message of vie nov 26 17:33:40 -0300 2010:
    Hola chicos: Estoy buscando, en 8.3, algo como lo siguiente:

    Una funcion que me permita convertir un row (resultante de una funcion
    determinada) y me devuelva un array con los valores de las columnas
    (casteado, digamos, a text), y no logro dar con la tecla.

    Lo ideal seria que el recorset que reciba esta funcion pueda ser
    generico, asi puedo utilizarlo para 'arraysear' resultados que provienen
    de diferentes funciones. Se entiende?
    Instala contrib/hstore y examina las funciones que provee. Al menos en
    9.0 puedes construir lo que quieres desde las piezas que hay ahí.

    En 8.3 hstore es harto más primitivo, pero quizás se pueda de todas formas.
    Si no, quizás puedas hacer un "backport" del hstore de 9.0 a 8.3 (creo
    que existe en pgfoundry, no estoy seguro).
    Gracias como siempre Alvaro, pero tengo limitaciones a la hora de
    instalar programas 'auxiliares'. Incluso tengo limitantes de no usar
    plpython, solo sql y pl/sql.

    Saludos.
    Gerardo
  • Marcos Luis Ortiz Valmaseda at Nov 27, 2010 at 2:45 am
    Pudieras crear entonces una funcion de agregado y usarla igual que se usa en
    versiones posteriores a 8.4

    CREATE AGGREGATE array_agg(anyelement) (
    SFUNC=array_append,
    STYPE=anyarray,
    INITCOND=’{}’
    );

    Una tabla de ejemplo:
    CREATE TABLE tes
    (
    id integer NOT NULL,
    grp integer NOT NULL,
    label text NOT NULL,
    CONSTRAINT tes_pkey PRIMARY KEY (id)
    ) WITH (OIDS=FALSE);

    Llenas la tabla con algunos datos:

    id grp label
    1 1 ABC
    2 1 DEF
    3 2 GHI
    4 2 JKL

    Y ejecutas una consulta de prueba:
    SELECT grp,
    array_agg(label)
    FROM tes
    GROUP BY grp;

    Resultado:

    grp array_agg
    1 {ABC,DEF}
    2 {GHI,JKL}

    Luego puedes hacer algo como esto:
    SELECT grp,
    array_to_string( array_agg(label), ‘,’ )
    FROM tes
    GROUP BY grp;

    Resultado:
    grp array_to_string
    1 ABC,DEF
    2 GHI,JKL

    El post original está aquí:
    http://abdulyadi.wordpress.com/2008/11/24/array_agg-for-postgresql-version-84/

    Saludos
    El 26 de noviembre de 2010 17:20, Gerardo Herzig <[email protected]>escribió:
    On 11/26/2010 06:51 PM, Alvaro Herrera wrote:
    Excerpts from Gerardo Herzig's message of vie nov 26 17:33:40 -0300 2010:
    Hola chicos: Estoy buscando, en 8.3, algo como lo siguiente:

    Una funcion que me permita convertir un row (resultante de una funcion
    determinada) y me devuelva un array con los valores de las columnas
    (casteado, digamos, a text), y no logro dar con la tecla.

    Lo ideal seria que el recorset que reciba esta funcion pueda ser
    generico, asi puedo utilizarlo para 'arraysear' resultados que provienen
    de diferentes funciones. Se entiende?
    Instala contrib/hstore y examina las funciones que provee. Al menos en
    9.0 puedes construir lo que quieres desde las piezas que hay ahí.

    En 8.3 hstore es harto más primitivo, pero quizás se pueda de todas formas.
    Si no, quizás puedas hacer un "backport" del hstore de 9.0 a 8.3 (creo
    que existe en pgfoundry, no estoy seguro).
    Gracias como siempre Alvaro, pero tengo limitaciones a la hora de
    instalar programas 'auxiliares'. Incluso tengo limitantes de no usar
    plpython, solo sql y pl/sql.

    Saludos.
    Gerardo
    -
    Enviado a la lista de correo pgsql-es-ayuda ([email protected]
    )
    Para cambiar tu suscripción:
    http://www.postgresql.org/mailpref/pgsql-es-ayuda


    --
    Ing. Marcos Luís Ortíz Valmaseda
    Data Lover(RDBMS and NOSQL Movement) && System Engineer

    http://it.toolbox.com/blogs/sql-apprentice
    http://www.linkedin.com/in/marcosluis2186/
    http://www.github.com/marcosluis2186

    Centro de Tecnologías de Gestión de Datos (DATEC)
    Linux User # 418229

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppgsql-es-ayuda @
categoriespostgresql
postedNov 26, '10 at 9:14p
activeNov 27, '10 at 2:45a
posts4
users3
websitepostgresql.org.es
irc#postgresql

People

Translate

site design / logo © 2023 Grokbase