El problema está en la línea ROWS ejecuta estó y listo. No retornarás como 
máximo 1000 filas solo una. 


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; 
ALTER FUNCTION srm_dame_num(text) OWNER TO postgres; 


----- Mensaje original ----- 
De: "Néstor Seguí Martínez" <[email protected]> 
Para: [email protected] 
Enviados: Lunes, 26 de Septiembre 2011 9:24:45 GMT -04:30 Caracas 
Asunto: [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.

Responder a