Re: Error al definir una función

From: Adrian Misael Peña Montero <ampena(at)uci(dot)cu>
To: Néstor Seguí Martínez <nessemar(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Error al definir una función
Date: 2011-09-26 17:59:56
Message-ID: 785314371.2015681317059996175.JavaMail.root@ucimail1.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Todo parece indicar que al consulta devuelve mas de una tupla, puedes corregir la consulta o la funcion, la funcion queadría:

CREATE OR REPLACE FUNCTION srm_dame_num(text)
RETURNS SET OFF integer AS $$
DECLARE
rec integer;
BEGIN
FOR rec IN SELECT relnatts FROM pg_class WHERE relname= $1
LOOP
RETURN NEXT rec;
END LOOP;
END;
$$ LANGUAGE plpgsql;

----- Original Message -----
From: "Néstor Seguí Martínez" <nessemar(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Monday, September 26, 2011 9:54:45 AM GMT -04:00 Georgetown
Subject: [pgsql-es-ayuda] Error al definir una función

Hola, tengo un problema con la definición de la siguiente función

CREATE OR REPLACE FUNCTION srm_dame_num(text)
RETURNS integer AS
$BODY$
DECLARE
rec integer;
BEGIN
SELECT INTO rec relnatts FROM pg_class WHERE relname= $1;
RETURN rec;
END;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100
ROWS 1000;
ALTER FUNCTION srm_dame_num(text) OWNER TO postgres;

Pretendo que la función reciba como parámetro el nombre de la tabla y me devuelva en un integer el número de campos.

Pero al tratar de definir la función obtengo este mensaje de error

"ERROR: ROWS is not applicable when function does not return a set
SQL state: 22023"

El error 22023 corresponde a un INVALID PARAMETER VALUE

El caso es que no consigo averiguar donde está el posible error. ¿alguna ayuda?

Muchas gracias por vuestro tiempo.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan 2011-09-26 19:33:03 Re: particiones
Previous Message Rodrigo Gonzalez 2011-09-26 17:57:06 Re: [pgsql-es-ayuda] Error al definir una función