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. <[email protected]>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 <[email protected]>
>>
>> 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/482e80323a35a54498b8b70ff2b879800465b3c...@azsmsx504.amr.corp.intel.com
>>>
>>> --
>>> Álvaro Herrera <[email protected]>
>>> The PostgreSQL Company - Command Prompt, Inc.
>>> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>>>
>>
>>
>

Responder a