Lo cambie por
Y me manda un error : Microsoft OLE DB Provider for ODBC Drivers : ERROR:
no existe el tipo «tlb_temporal»;
Error while executing the query
CREATE OR REPLACE FUNCTION public.grabar_importaciones()
RETURNS SETOF "tlb_temporal" 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;
De: [email protected]
[mailto:[email protected]] En nombre de Anthony Sotolongo
Enviado el: miércoles, 06 de abril de 2016 10:02 a.m.
Para: MKHotmail <[email protected]>; [email protected]
Asunto: Re: [pgsql-es-ayuda] Error en una funcion....
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: [email protected]
<mailto:[email protected]>
[mailto:[email protected]] En nombre de Anthony Sotolongo
Enviado el: miércoles, 06 de abril de 2016 09:55 a.m.
Para: MKHotmail <mailto:[email protected]> <[email protected]>;
[email protected] <mailto:[email protected]>
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 :)
Gracias
MK