Re: Castear desde un record type a los indices de un array

From: Andrés P(dot)P(dot) <solopostgres(at)gmail(dot)com>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Castear desde un record type a los indices de un array
Date: 2010-07-31 00:26:03
Message-ID: AANLkTi=u5nYe=ar+TcVs2hrU5aq6+0Ox+rE8qGuc3qJG@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola

Ya no me arroja el error original...después del último cambio, pero aparece
otro:

=============================================================
Último cambio:
...
loop
update test_catalog.test_table
set
test_minute_trans[v_record.trans_minute_pos:v_record.trans_minute_pos][2:2]
= '{'||v_record.tot_trans||'}'::integer[]
where mas bla bla....
....

y AHORA el error es:

testdb=# select * from test_catalog.fun_test_calc();
ERROR: array value must start with "{" or dimension information
LINE 1: ...test_table set test_minute_trans[ $1 : $2 ][2:2] = '{'|| $3
||'}'::integ...

^
QUERY: update test_catalog.test_table set test_minute_trans[ $1 : $2 ][2:2]
= '{'|| $3 ||'}'::integer[] where CONTEXT: PL/pgSQL function
"fun_test_calc" line 27 at SQL statement

(por si no llega bien identado...el ^ lo apunta al segundo '}' )
=============================================================

Parece obvio el error, pero no he podido solucionarlo..

Alguna sugerencia.??

Saludos
Andrés

> El 30 de julio de 2010 19:13, Andrés P.P. <solopostgres(at)gmail(dot)com>escribió:
>
>
>> Gracias Álvaro
>>
>> Lo estuve mirando, pero creo que no se aplica a mi problema.... Sin
>> embargo, seguí insistiendo con probar distintas formas en el UPDATE que es
>> donde se presenta el problema y descubrí que el problema NO ESTA en los
>> índices que uso en el SET... sino en el valor que asigno osea,
>> v_record.tot_trans
>>
>> Lo que tenía y que devuelve el error que les comenté:
>>
>> loop
>> update test_catalog.test_table
>> set test_minute_trans[v_record.trans_minute:v_record.trans_minute][2:2] =
>> '{'||v_record.tot_trans||'}'
>> where mas bla bla ....
>> end loop
>>
>> una de las pruebas tontas que hice para estar seguro de la sintaxis fue
>> modificar ese Update por:
>>
>> loop
>> update test_catalog.test_table
>> set
>> test_minute_trans[v_record.trans_minute_pos:v_record.trans_minute_pos][2:2]
>> = '{7}'
>> where mas bla bla...
>> end loop
>>
>> Y Funciono!.. osea en cuanto a no arrojar error... por lo tanto ahora
>> debo centrarme en como castear v_record.tot_trans (tot_trans es el
>> resultado de un SUM y al ser númerico asumí que no debería arrojarme ese
>> error... o el hecho de ir dentro de un record lo cambia de tipo??? )..
>>
>> Gracias
>> Andrés
>> Osea.. al parecer no le gusta el tipo de dato que tiene
>> "v_record.trans_minute" como para usarlo de índice para ubicar un elemento
>> del arreglo... ese dato es el que aparentemente debo castear pero no se
>> como..
>>
>> Saludos
>> Andres.
>>
>>
>>
>>
>>
>> 2010/7/30 Alvaro Herrera <alvherre(at)commandprompt(dot)com>
>>
>> Excerpts from Andrés P.P.'s message of vie jul 30 18:17:35 -0400 2010:
>>>
>>> > ....,
>>> > ....,
>>> > test_minute_trans integer[][]
>>> > ) without oids;
>>> > osea, un atributo de tipo Array de dos dimensiones..... ese atributo
>>> > contiene pares (minuto, transacciones) ..60 pares en total..
>>>
>>> Quizas esto te ayude
>>>
>>> http://archives.postgresql.org/message-id/482E80323A35A54498B8B70FF2B879800465B3CF95@azsmsx504.amr.corp.intel.com
>>>
>>> --
>>> Álvaro Herrera <alvherre(at)commandprompt(dot)com>
>>> The PostgreSQL Company - Command Prompt, Inc.
>>> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>>>
>>
>>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Andrés P.P. 2010-07-31 00:36:16 Original: Castear desde un record al update de un array ..Ahora: sintaxis..
Previous Message Andrés P.P. 2010-07-30 23:13:37 Re: Castear desde un record type a los indices de un array