Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/05/2011, 08:37
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: PostGis // Función que devuelve un booleano

Ah, que lo que querías pasar era el nombre de una tabla. No se puede realizar tal y como lo haces tú.

Si lo que quieres es realizar consultas dinámicas necesitas usar el comando EXECUTE:

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION str(text)
  2.   RETURNS text AS
  3. $BODY$
  4. /*Devuelve */
  5. DECLARE
  6.     car text;
  7. BEGIN
  8.     EXECUTE 'select text from ' ||  $1
  9.     INTO car;
  10.     RETURN car;
  11. END;
  12. $BODY$
  13.   LANGUAGE 'plpgsql' VOLATILE STRICT
  14.   COST 100;
  15. ALTER FUNCTION str(text) OWNER TO postgres;


No puedes usar el SELECT INTO con EXECUTE, en su defecto, debes usar la construcción EXECUTE ... INTO.

Además, ten en cuenta que en la variable car solo se va a guardar el valor del campo text de la primera fila de resultados (porque esa consulta normalmente devolverá más de una fila de resultados).

Te dejo un link de la documentación oficial sobre la sentencia EXECUTE:
http://www.postgresql.org/docs/9.0/interactive/plpgsql-statements.html