From: | Anthony Sotolongo <asotolongo(at)gmail(dot)com> |
---|---|
To: | MKHotmail <mcanchas(at)hotmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Error en una funcion.... |
Date: | 2016-04-06 15:01:42 |
Message-ID: | 570524D6.9030801@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Esa función devuelve un record por ende tienes que castear tu resultado,
deberías llamarla con algo como esto:
Select * from public.grabar_importaciones() as (att tipo,...);
donde (att tipo,...) son los atributos de la tabla tbl_temporal
también puedes definir el returns de tu tabla como SETOF "tlb_temporal"
y te ahorras el casteo
Saludos
On 06/04/16 11:56, MKHotmail wrote:
>
> Select public.grabar_importaciones() ;
>
> MK
>
> *De:*pgsql-es-ayuda-owner(at)postgresql(dot)org
> [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] *En nombre de *Anthony
> Sotolongo
> *Enviado el:* miércoles, 06 de abril de 2016 09:55 a.m.
> *Para:* MKHotmail <mcanchas(at)hotmail(dot)com>; pgsql-es-ayuda(at)postgresql(dot)org
> *Asunto:* Re: [pgsql-es-ayuda] Error en una funcion....
>
> Hola, como estas llamando a esa función?
>
> On 06/04/16 11:49, MKHotmail wrote:
>
> Buenos días, estoy haciendo una función simple…y me arroja este
> error :
>
> Microsoft OLE DB Provider for ODBC Drivers : ERROR: se llamó una
> función que retorna un conjunto en un contexto que no puede aceptarlo;
>
> Error while executing the query
>
> Mi función es esta : solo es pasar la información importada de una
> tabla a la de producción(si existe actualiza sino lo agrega..) :
>
> CREATE OR REPLACE FUNCTION public.grabar_importaciones()
>
> RETURNS SETOF "record" AS
>
> $BODY$
>
> DECLARE
>
> r RECORD;
>
> cuenta INTEGER;
>
> BEGIN
>
> FOR r IN select * from tbl_temporal
>
> LOOP
>
> SELECT INTO cuenta count(*) FROM productos where idproducto =
> r.idproducto ;
>
> IF cuenta > 0 THEN
>
> UPDATE productos SET nombre_producto = r.nombre_producto,
> idfamilia = r.idfamilia,
>
> idsubfamilia = r.idsubfamilia Where idproducto = r.idproducto ;
>
> ELSE
>
> INSERT INTO productos(idproducto, nombre_producto, idfamilia,
> idsubfamilia)
>
> Values(r.idproducto, r.nombre_producto, r.idfamilia, r.idsubfamilia);
>
> END IF ;
>
> return next r ;
>
> END LOOP;
>
> return;
>
> END;
>
> $BODY$
>
> LANGUAGE 'plpgsql' VOLATILE;
>
> Podrian indicarme por donde va mi espantoso error J
>
> Gracias
>
> MK
>
From | Date | Subject | |
---|---|---|---|
Next Message | Virginia | 2016-04-06 15:03:23 | Vista con pase de parámetros |
Previous Message | Anthony Sotolongo | 2016-04-06 14:56:51 | Re: Formato de consulta |