Tengo un problema con funciones que utilizan cursores.
Estoy intentando crear la siguiente función:
CREATE OR REPLACE FUNCTION f_buscarcau(codlocalidad integer)
RETURNS character varying AS
$BODY$
DECLARE
s_cau VARCHAR(5);
cau_cursor CURSOR FOR SELECT app_localidades.cau FROM app_localidades WHERE app_localidades.codlocalidad = $1;
BEGIN
OPEN cau_cursor;
FETCH NEXT FROM cau_cursor INTO s_cau;
CLOSE cau_cursor;
RETURN s_cau;
END
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Pero obtengo el siguiente resultado
ERROR: syntax error en o cerca de «NEXT»
LINE 9: FETCH NEXT FROM cau_cursor INTO s_cau;
^
********** Error **********
ERROR: syntax error en o cerca de «NEXT»
Estado SQL:42601
Caracter: 270
Esto ocurre cuando ejecuto esta consulta en mi instalación de Postgre en LINUX. La misma consulta en la misma base de datos pero en una instalación de Postgre en Windows funciona correctamente ¿?.
En ambas plataformas estoy usando PostgreSQL 8.2. En Windows uso MS Windows XP Pro SP2 y en Linux uso OpenSUSE 10.3 (x86_64).
La base de datos en las dos instalaciones tiene instalado el lenguaje PL/pgSQL. El asunto es que en Windows funciona y en Linux no. ¿A que puede deberse esto?
Muchas gracias de ante mano por cualquier ayuda que puedan darme.
Saludos!!


