Thread: Retrieve the column values of a record without knowing the names

Retrieve the column values of a record without knowing the names

From
arthur_info
Date:
Hello,

I've got the following function and I want to access the fields values of my
record by index. The problem is that my select is retrieving each record
line with all values and not each one of each row on my view... How can I
solve this problem? 

Thanks in advance.


CREATE FUNCTION fc_teste_tce(aluno integer) RETURNS character varying AS
$BODY$ 
DECLARE reg record;
BEGIN for reg in execute 'SELECT ARRAY (SELECT vw_teste_tce FROM
estagio.vw_teste_tce where aluno = ''3043'' LIMIT 20) AS campos' loop   for j in 1..array_upper(reg.campos,1) loop
raisenotice 'Field Value: %',reg.campos[j];   end loop; end loop; return 'ok';
 
END;  
$BODY$

LANGUAGE plpgsql VOLATILE;


-- 
View this message in context:
http://postgresql.1045698.n5.nabble.com/Retrieve-the-column-values-of-a-record-without-knowing-the-names-tp3387935p3387935.html
Sent from the PostgreSQL - sql mailing list archive at Nabble.com.


Re: Retrieve the column values of a record without knowing the names

From
Achilleas Mantzios
Date:
Στις Wednesday 16 February 2011 18:18:19 ο/η arthur_info έγραψε:
>
> Hello,
>
> I've got the following function and I want to access the fields values of my
> record by index. The problem is that my select is retrieving each record
> line with all values and not each one of each row on my view... How can I
> solve this problem?
>

Well by your function, it seems that it does not do what you want.
You want to access the values of one row without knowing the names, but what you do
is create an array over the values of a *known* column.
Also where aluno = ''3043'' does not make any sense either.

Anyways, you might want to look at database metada as found in the information_schema.
For a start you might want to look in information_schema.columns

> Thanks in advance.
>
>
> CREATE FUNCTION fc_teste_tce(aluno integer) RETURNS character varying AS
> $BODY$
> DECLARE
>   reg record;
> BEGIN
>   for reg in execute 'SELECT ARRAY (SELECT vw_teste_tce FROM
> estagio.vw_teste_tce where aluno = ''3043'' LIMIT 20) AS campos' loop
>     for j in 1..array_upper(reg.campos,1) loop
>       raise notice 'Field Value: %',reg.campos[j];
>     end loop;
>   end loop;
>   return 'ok';
> END;
> $BODY$
>
> LANGUAGE plpgsql VOLATILE;
>
>
> --
> View this message in context:
http://postgresql.1045698.n5.nabble.com/Retrieve-the-column-values-of-a-record-without-knowing-the-names-tp3387935p3387935.html
> Sent from the PostgreSQL - sql mailing list archive at Nabble.com.
>



--
Achilleas Mantzios


Re: Retrieve the column values of a record without knowing the names

From
arthur_info
Date:
Wow, how I didn't think about this solution? Thanks a lot! So easy...
-- 
View this message in context:
http://postgresql.1045698.n5.nabble.com/Retrieve-the-column-values-of-a-record-without-knowing-the-names-tp3387932p3390950.html
Sent from the PostgreSQL - sql mailing list archive at Nabble.com.


Re: Retrieve the column values of a record without knowing the names

From
Dmitriy Igrishin
Date:
Hey,

2011/2/16 arthur_info <arthur_info@yahoo.com.br>

Hello,

I've got the following function and I want to access the fields values of my
record by index. The problem is that my select is retrieving each record
line with all values and not each one of each row on my view... How can I
solve this problem?
You can easily iterate across records from PL/pgSQL by using hstore, e.g:
SELECT (avals(hstore(ROW(83,6,4))))[3];
dmitigr=> SELECT (avals(hstore(ROW(83,6,4))))[3] AS thirdfield;
 thirdfield
------------
 4
(1 row)

See http://www.postgresql.org/docs/9.0/static/hstore.html
 

Thanks in advance.


CREATE FUNCTION fc_teste_tce(aluno integer) RETURNS character varying AS
$BODY$
DECLARE
 reg record;
BEGIN
 for reg in execute 'SELECT ARRAY (SELECT vw_teste_tce FROM
estagio.vw_teste_tce where aluno = ''3043'' LIMIT 20) AS campos' loop
   for j in 1..array_upper(reg.campos,1) loop
     raise notice 'Field Value: %',reg.campos[j];
   end loop;
 end loop;
 return 'ok';
END;
$BODY$

LANGUAGE plpgsql VOLATILE;


--
View this message in context: http://postgresql.1045698.n5.nabble.com/Retrieve-the-column-values-of-a-record-without-knowing-the-names-tp3387935p3387935.html
Sent from the PostgreSQL - sql mailing list archive at Nabble.com.

--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql



--
// Dmitriy.


Re: Retrieve the column values of a record without knowing the names

From
arthur_info
Date:
Thanks Dmitry Grishin. The only problem is that my DBA didn't permit install
this command... :(
But, I quit this problem...
Thanks by attention...
-- 
View this message in context:
http://postgresql.1045698.n5.nabble.com/Retrieve-the-column-values-of-a-record-without-knowing-the-names-tp3387932p3396051.html
Sent from the PostgreSQL - sql mailing list archive at Nabble.com.