Re: Error al definir una función

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

La clausula ROWS es un estimado del número de tuplas que va a devolver la función, este valor lo utiliza el planificador de consultas del PostgreSQL par la creación del plan de ejecución de la misma. Este valor nunca limita el numero de tuplas que devuelve la función.

Saludos

----- Original Message -----
From: "Ing. Yunior Bauta Pentón" <ypenton(at)uci(dot)cu>
To: "Néstor Seguí Martínez" <nessemar(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Sent: Tuesday, September 27, 2011 3:40:48 PM GMT -04:30 Caracas
Subject: Re: [pgsql-es-ayuda] Error al definir una función

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" <nessemar(at)gmail(dot)com>
Para: pgsql-es-ayuda(at)postgresql(dot)org
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.

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan Manuel Acuña Barrera 2011-09-28 17:12:32 Fwd: windows o linux
Previous Message guillermovil 2011-09-27 20:42:35 Re: particiones