Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Error al definir una función

Estas en el tema de Error al definir una función en el foro de PostgreSQL en Foros del Web. Hola de nuevo :) : ¿Alguien podría echarme un cable con la definición de esta función? Código: CREATE OR REPLACE FUNCTION srm_dame_num(text) RETURNS integer AS ...
  #1 (permalink)  
Antiguo 26/09/2011, 05:28
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
Error al definir una función

Hola de nuevo :) : ¿Alguien podría echarme un cable con la definición de esta función?

Código:
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

Cita:
ERROR: ROWS is not applicable when function does not return a set
SQL state: 22023
El error 22023 corresponde a un INVALID PARAMETER VALUE

Gracias a todos.
  #2 (permalink)  
Antiguo 19/10/2011, 08:02
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Respuesta: Error al definir una función

Hay un problema con la sintaxis de INTO, creo que la estas usando alrevez, mira el siguiente ejemplo de mis apuntes.


Crear una función que devuelva la cantidad de fields
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION number_fields(text)
  2. RETURNS INTEGER AS
  3. $BODY$
  4. DECLARE
  5. cfields INTEGER;
  6. BEGIN
  7. SELECT relnatts INTO cfields FROM pg_class WHERE relname= $1 LIMIT 1;
  8. RETURN cfields;
  9.  
  10. END;$BODY$
  11. LANGUAGE 'plpgsql' VOLATILE
  12. COST 100;
  13.  
  14. SELECT number_fields('users');

Saludos

Etiquetas: definir, postgres, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:18.