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" <[email protected]>
To: [email protected]
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.
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda