Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/02/2016, 14:52
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Crear una funcion que llame a una tabla con un id

Mira, el problema es de una simpleza muy grande...

Una función devuelve siempre un único valor, el cual está definido en el prototipo. Eso quiere decir que si estás definiendo la función para que te devuelva un INTEGER, sólo puede dar como salida un INTEGER, y NO un registro entero.
¿Se entiende?

No puedes pedirle manzanas y que te devuelva caballos. Así de simple.

Ahora bien, esto mismo es lo que te está respondiendo PostgreSQL, solamente que no lo estás leyendo:

1) "query has no destination for result data"
TE dice que la consulta no tiene un destino para los datos resultantes, es decir, no estás haciendo que los datos de la query se almacenen en una variable de ninguna clase.

2) "If you want to discard the results of a SELECT, use PERFORM instead"
Si quieres que los datos sean descartados, debes usar PERFORM.

En esencia, una query en la funcion debe depositar los datos de salida en alguna variable, o se pierden. La variable debería ser el RETURN de la función almacenada, y no lo estás haciendo.
Por otro lado, si quieres obtener varios datos, debes usar stored procedures, no functions. No sé si PostgreSQL tiene tipos de dato RECORD o collections, como otros DBMS. Si es asi, podrians probar.

Pero lo más importante:Si estás intentando aprender, usa los ejemplos del manual de referencia oficial, y recién cuando los hayas entendido, haz la prueba con tu base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)