Re: [pgsql-es-ayuda] Error al definir una función

From: Néstor Seguí <nessemar(at)gmail(dot)com>
To: Rodrigo Gonzalez <rjgonzale(at)estrads(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: [pgsql-es-ayuda] Error al definir una función
Date: 2011-09-27 09:13:02
Message-ID: CAPsg93ezCp7Q3tX90jefQR8W+DkjLS6H-_AB1C-K33ckHXuAWg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenas, no acabo de entender bien el funcionamiento de la lista, pero espero
que mi respuesta os llegue a todos y se publique en la lista:

Rodrigo, funciona tal como me dijiste muchas gracias. He de reconocer mi
culpa por usar código que no comprendo al 100%.

Adrian, la query "SELECT relnatts INTO rec FROM pg_class WHERE relname=
tabla_en_cuestión" me devuelve un solo valor, que es el número de atributos
de la tabla en cuestión. así que supuse que no era ese el problema, no
obstante gracias por tu tiempo.

Gilberto, como tu me indicas es como lo tenía en un inicio (también como lo
indican en los manuales), gracias por el apunte. No obstante la función me
devuelve el mismo resultado tanto si pongo "INTO rec" delante de relnatts
como si lo pongo detrás. Extraño, ¿no?.

¿Alguien me sabría linkar donde encuentro la información necesaria para
saber que hacen los parámetros COST y ROWS?, no consigo encontrarla.

Muchas gracias a todos por vuestro tiempo.

El 26 de septiembre de 2011 19:57, Rodrigo Gonzalez <
rjgonzale(at)estrads(dot)com(dot)ar> escribió:

> On 09/26/2011 10:54 AM, Néstor Seguí Martínez wrote:
>
> 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"
>
> Quita la ultima linea que dice ROWS 1000 y listo...
>
>
> El error 22023 corresponde a un INVALID PARAMETER VALUE
>
>
> Saludos
>
> Rodrigo Gonzalez
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Lazaro Rubén García Martinez 2011-09-27 13:24:22 RE: Problema con Pgwatch
Previous Message Guillermo Villanueva 2011-09-27 03:54:49 Re: particiones