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.
