Anthony muchas gracias por tu respuesta.
Saludos.
________________________________________
De: Anthony [asotolo...@uci.cu]
Enviado el: lunes, 04 de julio de 2011 16:31
Para: Lazaro Rubén García Martinez
CC: pgsql-es-ayuda@postgresql.org
Asunto: Re: [pgsql-es-ayuda] Consulta utilizando Arrays.

El 04/07/2011 16:45, Lazaro Rubén García Martinez escribió:
> Hola a todos en la lista, necesito realizar un procedimiento en el que pase 
> un arreglo (algo como tipo de clave , valor) cuyos datos los necesito 
> insertar en una tabla.
> El arreglo tendría la siguiente estructura
>
> {{1, "valor1"},{2, "valor2"}}.
>
> Como el arreglo contiene columnas donde primeramente hay un dato de tipo 
> entero seguido de un varchar cree un tipo de dato para almacenar el arreglo, 
> pero sinceramente no doy con lo que necesito hacer.
>
> Alguien me pudiera decir de que forma pudiera recorrer el arreglo y poder 
> seleccionar cada valor para poder trabajar con estos.
>
> Mas o menos la idea del procedimiento es la siguiente:
>
> El tipo de dato es este:
> CREATE TYPE public.dato_compuesto AS (
>    a INTEGER,
>    b VARCHAR(20)
> );
>
> Este es el procedimiento:
>
> CREATE OR REPLACE FUNCTION public.function1 ( datos public.dato_compuesto) 
> RETURNS pg_catalog.void AS
> $body$
> DECLARE
>       size integer := array_length(datos);
> BEGIN
>       for i IN 1..size
>      Loop
>       INSERT INTO my_table
>          (
>            clave,
>            valor
>          )
>          VALUES (
>            datos[i][1],
>            datos[i][2]
>        );
>      END Loop;
> END;
> $body$
> LANGUAGE 'plpgsql'
> VOLATILE
> RETURNS NULL ON NULL INPUT
> SECURITY INVOKER
> COST 100;
>
> La llamada la realizo de la siguiente forma:
>
> SELECT * FROM public.function1('{1,"Mi valor"}');
>
> Y el error que me da es este:
>
> ERROR:  literal de record no es válido: «{1,"Mi valor"}»
>
> saludos y muchas gracias por su tiempo.
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>
mira a aver si tienes algun problema con la comillas dobles al pasarle
los parametros a la funcion ponle comillas simples con caracteres de escape.
saludos
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a