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
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 |