Anthony muchas gracias por tu respuesta.
Saludos.
________________________________________
De: Anthony [[email protected]]
Enviado el: lunes, 04 de julio de 2011 16:31
Para: Lazaro Rubén García Martinez
CC: [email protected]
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 ([email protected])
> 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 ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda