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

Responder a