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.
-- 
 Rafael Martinez, <[email protected]>
 Center for Information Technology Services
 University of Oslo, Norway

 PGP Public Key: http://folk.uio.no/rafael/
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
               http://archives.postgresql.org/pgsql-es-ayuda

Responder a