RE: consulta función

From: Lazaro Rubén García Martinez <lgarciam(at)vnz(dot)uci(dot)cu>
To: Ana Claudia Smail <anasmail(at)unnoba(dot)edu(dot)ar>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: consulta función
Date: 2011-11-22 13:47:24
Message-ID: 294D3D02D5E18D42827B2ECFEADEB688214D1F2A4B@mx-interno.vnz.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Fíjate en la estructura de la tabla, acabo de reproducir tu error, y este se debe a que la primera columna de tu tabla es de tipo entero y en la función estas devolviendo un varchar como primera columna. Te recomiendo que cambies el orden en el que devuelves las cosas en la consulta definida en la función.

Saludos.

De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Ana Claudia Smail
Enviado el: martes, 22 de noviembre de 2011 08:46
Para: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: [pgsql-es-ayuda] consulta función

Hola a todos!
Estoy teniendo un problema con una función en progresql 8.4:
CREATE OR REPLACE FUNCTION getLibres(varchar(20), varchar(20)) RETURNS SETOF tabla1 AS
$BODY$
DECLARE
r tabla1%rowtype;
BEGIN
IF $2 IS NULL THEN
FOR r IN SELECT CAST($1 AS VARCHAR(255)),count(*) FROM tabla1
WHERE tabla1.confirmada = '1' group by 1 order by 1
LOOP
RETURN NEXT r;
END LOOP;
END IF;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql' ;

Cuando ejecuto SELECT * FROM getLibres('campo1',NULL);

Me tira el siguiente error:
ERROR: la sintaxis de entrada no es válida para integer: «campo1»
CONTEXT: PL/pgSQL function "getlibres" line 5 at bucle FOR en torno a registros de un SELECT

Porqué me toma el campo como integer?
Gracias por su tiempo
ANA

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message dali aparicio 2011-11-22 13:57:50 Re: [pgsql-es-ayuda] consulta función
Previous Message Rafael Martinez 2011-11-22 13:41:42 Re: consulta función