Re: Error en una funcion....

From: mauricio pullabuestan <jmauriciopb(at)yahoo(dot)es>
To: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Error en una funcion....
Date: 2016-04-07 13:04:13
Message-ID: 1876857075.1568819.1460034253096.JavaMail.yahoo@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola MK.
Primero cambiaría la funcion

CREATE OR REPLACE FUNCTION public.grabar_importaciones()RETURNS void AS$BODY$BEGIN
UPDATE productos p SET nombre_producto = r.nombre_producto,      idfamilia       = r.idfamilia,      idsubfamilia    = r.idsubfamilia FROM tbl_temporal r  Where p.idproducto = r.idproducto ;
INSERT INTO productos(idproducto, nombre_producto, idfamilia, idsubfamilia) Select r.idproducto, r.nombre_producto, r.idfamilia, r.idsubfamilia 
 From tbl_temporal r LEFT JOIN       productos p USING(idproducto)  Where p.idproducto IS NULL;
END;
$BODY$LANGUAGE 'plpgsql' VOLATILE;
Ahora prueba con:Perform * public.grabar_importaciones()

Saludos.Mauricio

El Miércoles 6 de abril de 2016 10:08, MKHotmail <mcanchas(at)hotmail(dot)com> escribió:

#yiv0855783965 #yiv0855783965 -- _filtered #yiv0855783965 {font-family:Wingdings;panose-1:5 0 0 0 0 0 0 0 0 0;} _filtered #yiv0855783965 {panose-1:2 4 5 3 5 4 6 3 2 4;} _filtered #yiv0855783965 {font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;}#yiv0855783965 #yiv0855783965 p.yiv0855783965MsoNormal, #yiv0855783965 li.yiv0855783965MsoNormal, #yiv0855783965 div.yiv0855783965MsoNormal {margin:0cm;margin-bottom:.0001pt;font-size:11.0pt;color:black;}#yiv0855783965 a:link, #yiv0855783965 span.yiv0855783965MsoHyperlink {color:#0563C1;text-decoration:underline;}#yiv0855783965 a:visited, #yiv0855783965 span.yiv0855783965MsoHyperlinkFollowed {color:#954F72;text-decoration:underline;}#yiv0855783965 span.yiv0855783965EstiloCorreo17 {color:windowtext;}#yiv0855783965 span.yiv0855783965EstiloCorreo18 {color:#1F497D;}#yiv0855783965 span.yiv0855783965EstiloCorreo19 {color:#1F497D;}#yiv0855783965 .yiv0855783965MsoChpDefault {font-size:10.0pt;} _filtered #yiv0855783965 {margin:70.85pt 3.0cm 70.85pt 3.0cm;}#yiv0855783965 div.yiv0855783965WordSection1 {}#yiv0855783965 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] 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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miguel Beltran R. 2016-04-07 15:01:33 Re: [pgsql-es-ayuda] Adicionar sábados y domingos del mes en una planilla de asistencia
Previous Message Hellmuth Vargas 2016-04-07 13:00:30 Re: Mantenimiento a base de datos