Re: Funcion no existe

From: Felipe Hernández <pipelx(at)gmail(dot)com>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Funcion no existe
Date: 2014-07-15 22:11:02
Message-ID: CAPwoUi2eb5iPDEjDCEoCSAGbTfR0oBrVTkdEucdGNy2YSE8NMA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola,

Problema resuelto, tocaba ver mas alla de lo evidente, el problema no era
de la función, es un bug en la programación de java, que por alguna razón,
cuando se hacen muchas peticiones y muy rápidas, el estaba realizando la
petición a otra base de datos de una forma muy aleatoria, y en esta otra
base de datos el procedimiento no estaba presente.

Muchas gracias por su ayuda.

El 15 de julio de 2014, 16:46, Juan <smalltalker(dot)marcelo(at)gmail(dot)com>
escribió:

> Hola Felipe
>
> Así a simple visa tu función espera un char(5) sino le pasas parametro
> deberás crear otra función donde no reciba parametro.
>
> Salu2
> Jmdc
> El 15/07/2014 13:19, "Felipe Hernández" <pipelx(at)gmail(dot)com> escribió:
>
> Hola,
>>
>> Se me esta presentando el siguiente problema, Tengo una funcion llamada
>> pendientes, el llamado de esta funcion la hago de la siguiente forma,
>>
>> select pendientes('20294');
>>
>> donde '20294' es un codigo que varia; la funcion trabaja correctamente,
>> pero si esta es llamada muchas veces obtengo el siguiente error:
>>
>> ERROR: no existe la función pendientes(character) en carácter 8
>> HINT: Ninguna función coincide en el nombre y tipos de argumentos. Puede
>> desear agregar conversión explícita de tipos.
>>
>> SENTENCIA: SELECT pendientes('20294');
>>
>> Hice la siguiente prueba para descartar el tipo de argumento, le quite el
>> argumento a la funcion y la llame asi:
>>
>> select pendientes();
>>
>> Estableciendo como constante internamente '20294' el valor de la
>> variable, pero obtengo un error similar
>>
>> ERROR: no existe la función pendientes() en carácter 8
>> HINT: Ninguna función coincide en el nombre y tipos de argumentos. Puede
>> desear agregar conversión explícita de tipos.
>> SENTENCIA: SELECT pendientes();
>>
>> La funcion es eficiente, retornando el resultado en tiempos que van entre
>> los 200 a 230 milisegudos como maximo.
>>
>> Estoy trabajando con un postgresql version 8.4.20, sistema operativo
>> Centos kernel 2.6.32 y me conecto a postgres por jdbc.
>>
>> Adjunto procedimiento a continuacion.
>>
>> CREATE OR REPLACE FUNCTION pendientes(vlr character(5))
>> RETURNS character AS
>> $BODY$
>> DECLARE
>> fila resultadof%ROWTYPE;
>> rta text;
>> BEGIN
>> rta:='';
>>
>> --TEMPORALES
>> DROP TABLE IF EXISTS
>> vinfo_pedido,vinfo_ppendiente,vdinfo_ppendiente,vinv, pendientes;
>>
>> CREATE TEMP TABLE vinfo_pedido(codigo character(5));
>>
>> INSERT INTO vinfo_pedido VALUES (vlr);
>> UPDATE vinfo_pedido SET codigo=lpad(codigo,5,'0');
>>
>> CREATE TEMP TABLE vinfo_ppendiente AS
>> SELECT
>> ps.id_prod_serv,
>> coalesce(sum(pedido),0)-coalesce(sum(despacho),0) AS pendiente
>> FROM
>> pendiente p,
>> documentos d,
>> prod_serv ps,
>> vinfo_pedido ip
>> WHERE
>> ps.codigo=ip.codigo AND
>> p.id_prod_serv=ps.id_prod_serv AND
>> d.ndocumento=p.ndocumentoa AND
>> p.estado AND
>> d.estado
>> GROUP BY
>> ps.id_prod_serv
>> HAVING
>> coalesce(sum(pedido),0)-coalesce(sum(despacho),0)!=0;
>>
>> CREATE TEMP TABLE vdinfo_ppendiente AS
>> SELECT
>> ps.id_prod_serv,
>> d.fecha::date,
>> trim(g.nombre1||' '||g.nombre2||' '||g.apellido1||' '||g.apellido2||'
>> '||g.razon_social) as tercero,
>> coalesce(sum(pedido),0)-coalesce(sum(despacho),0) AS pendiente
>> FROM
>> general g,
>> tercero_def t,
>> pendiente p,
>> documentos d,
>> prod_serv ps,
>> vinfo_pedido ip
>> WHERE
>> t.ndocumento=d.ndocumento AND
>> t.id=g.id AND
>> ps.codigo=ip.codigo AND
>> p.id_prod_serv=ps.id_prod_serv AND
>> d.ndocumento=p.ndocumentoa AND
>> p.estado AND
>> d.estado
>> GROUP BY
>> d.fecha::date,
>> trim(g.nombre1||' '||g.nombre2||' '||g.apellido1||' '||g.apellido2||'
>> '||g.razon_social),
>> ps.id_prod_serv
>> HAVING
>> coalesce(sum(pedido),0)-coalesce(sum(despacho),0)!=0;
>>
>> CREATE TEMP TABLE vinv AS
>> SELECT DISTINCT ON(p.id_prod_serv)
>> p.id_prod_serv,
>> p.cant_minima,
>> d.ndocumento
>> FROM
>> inventarios i,
>> documentos d,
>> vinfo_pedido ip,
>> prod_serv p
>> WHERE
>> ip.codigo=p.codigo AND
>> p.id_prod_serv=i.id_prod_serv AND
>> d.ndocumento=i.ndocumento AND
>> (d.codigo_tipo='EA' OR
>> d.codigo_tipo='RM')
>> ORDER BY
>> p.id_prod_serv,
>> i.fecha DESC,
>> orden DESC;
>>
>> DELETE FROM resultadof;
>> INSERT INTO resultadof
>> SELECT
>> pp.fecha,
>> pp.tercero,
>> pp.dpendiente AS tpendientes,
>> 'PENDIENTE '||COALESCE(pp.pendiente,0)||' - U.C.
>> '||COALESCE(g.proveedor,'')||' - Cant. Mínima: '||COALESCE(g.cant_minima,0)
>> AS pendiente
>> FROM
>> (SELECT
>> pp.id_prod_serv,
>> dp.fecha,
>> dp.tercero,
>> dp.pendiente AS dpendiente,
>> pp.pendiente
>> FROM
>> vdinfo_ppendiente AS dp,
>> vinfo_ppendiente AS pp
>> WHERE
>> dp.id_prod_serv=pp.id_prod_serv) AS pp
>> FULL OUTER JOIN
>> (SELECT
>> i.id_prod_serv,
>> d.fecha::date||' '||TRIM(g.nombre1||' '||g.nombre2||' '||g.apellido1||'
>> '||g.apellido2||' '||g.razon_social||' CANT DESPACHADA
>> '||to_char(dp.cant,'9,999,999.99')) AS proveedor,
>> i.cant_minima
>> FROM
>> documentos d,
>> datos_prod dp,
>> tercero_def t,
>> general g,
>> vinv AS i
>> WHERE
>> dp.ndocumento=i.ndocumento AND
>> dp.id_prod_serv=i.id_prod_serv AND
>> i.ndocumento=d.ndocumento AND
>> t.ndocumento=i.ndocumento AND
>> t.id=g.id) AS g
>> ON
>> g.id_prod_serv=pp.id_prod_serv;
>> --FUNCION INS
>>
>> create temp table pendientes (id_pendiente varchar(20),texto text);
>>
>> FOR fila IN SELECT * FROM resultadof
>> LOOP
>> -- INSERT INTO pendiente VALUES('0',fila.fecha);
>> rta:=COALESCE(fila.fecha,current_date)||' -
>> '||COALESCE(fila.tercero,'NO EXISTEN PENDIENTES A LA FECHA ')||' -
>> '||COALESCE(fila.tpendientes,0)||'\n'||rta;
>> END LOOP;
>> rta:=rta||''||fila.pendiente;
>> INSERT INTO pendientes VALUES(vlr,rta);
>> return rta;
>> END;
>> $BODY$
>> LANGUAGE plpgsql VOLATILE
>> COST 100;
>> ALTER FUNCTION pendientes(character(5))
>> OWNER TO emaku;
>>
>>
>>
>>
>> LUIS FELIPE HERNANDEZ
>> PASTO - COLOMBIA
>>
>

--
fElIpE

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Flavio Roche 2014-07-17 03:55:00 Unir Columnas!!!!
Previous Message Juan 2014-07-15 21:46:55 Re: Funcion no existe