Después de haber descansado un buen rato me di cuenta del problema.
Efectivamente era ese "pequeño" problemita de conversión de datos.
Es increíble como se puede nublar uno después de trabajar muchas horas 
continuadas sin descanso. 
Gracias de todos modos Rafael.

Saludos

CBD

El Wednesday 28 January 2009 10:36:04 Rafael Martinez escribió:
> Carlos Bazán wrote:
> > La cual ejecuto por ejemplo con la siguiente llamada:
> > select public.borra_usuario('{5}', '3')
> > y me retorna el siguiente mensaje de error:
> >
> > ERROR:  el operador no existe: text || integer[]
> > LINEA 1: ...te_ident( $1 ) || '.usuario WHERE user_id = ANY(' ||  $2 
> > ||... ^
> > HINT:  Ningún operador coincide con el nombre y el tipo de los
> > argumentos. Puede desear agregar conversiones explícitas de tipos.
> > CONSULTA:  SELECT  'SELECT * FROM ' || quote_ident( $1 ) || '.usuario
> > WHERE user_id = ANY(' ||  $2  || ')'
> > CONTEXTO:  PL/pgSQL function "borra_usuario" line 13 at assignment
>
> Hola Carlos
>
> El problema que tienes es que estas intentando concatenar un texto con
> un integer array sin especificar que tipo de conversion quieres hacer.
>
> El problema lo tienes en esta linea:
> -------------------------------------------
> comando := 'SELECT * FROM '
>
>       || quote_ident(esquema)
>       || '.usuario WHERE user_id = ANY('
>       || arreglo_id
>       || ')';
>
> -------------------------------------------
>
> arreglo_id es un integer array y el operador || solo funciona con texto.
>
> Si cambias arreglo_id por array_to_string(arreglo_id,',') no deberias de
> tener este problema.
>
> Si arreglo_id hubiese sido solo un integer, podrias haber escrito
> directamente arreglo_id::text para convertirlo a un tipo texto.
>
> Suerte y ya contaras.
--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo 
agradecerán

Responder a