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-ow...@postgresql.org [mailto:pgsql-es-ayuda-ow...@postgresql.org] *En nombre de *Anthony Sotolongo
*Enviado el:* miércoles, 06 de abril de 2016 09:55 a.m.
*Para:* MKHotmail <mcanc...@hotmail.com>; pgsql-es-ayuda@postgresql.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


Responder a