From: | MKHotmail <mcanchas(at)hotmail(dot)com> |
---|---|
To: | "'Anthony Sotolongo'" <asotolongo(at)gmail(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: Error en una funcion.... |
Date: | 2016-04-06 15:07:11 |
Message-ID: | DUB405-EAS373FC3AF7F59E4A9232E568D79F0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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: 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 10:02 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....
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>
[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 <mailto:mcanchas(at)hotmail(dot)com> <mcanchas(at)hotmail(dot)com>;
pgsql-es-ayuda(at)postgresql(dot)org <mailto: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 :)
Gracias
MK
From | Date | Subject | |
---|---|---|---|
Next Message | Anthony Sotolongo | 2016-04-06 15:14:33 | Re: Error en una funcion.... |
Previous Message | Virginia | 2016-04-06 15:03:23 | Vista con pase de parámetros |