Re: Error en una funcion....

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
>

In response to

Responses

Browse pgsql-es-ayuda by date

  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