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 :)

 

Gracias

 

MK

Responder a