PostgreSQL - FUNCIONES CON POSTGRESQL

 
Vista:

FUNCIONES CON POSTGRESQL

Publicado por dayana (2 intervenciones) el 13/07/2018 23:59:57
HOLA, NECESITO DE SU AYUDA, como puedo realizar una funcion con parametros de entrada y devuelva los registros relacionados con muchas tablas, intente realizar uno pero no me acepta por los alias, si me pudieran compartir un ejemplo porfavor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

FUNCIONES CON POSTGRESQL

Publicado por YYanes (20 intervenciones) el 16/07/2018 19:25:47
Hola hola amiga:

Para lo que necesitas hay un truco que te puede resultar: crear primero una vista, y luego utilizarla en el procedimiento almacenado.

¿Qué significa esto? Significa que primero crearás una vista que devuelva exactamente los mismos valores que devolvería tu Función (sin parámetros, por supuesto), y luego crearías la función asignándole como tipo de dato de salida el nombre de la vista. Por ejemplo:

Supongamos que tenemos las tablas Grupo(id, nombre, curso), y Estudiante(id, nombre, edad, grupoId) en donde "grupoId" es llave foránea que hace referencia al id de Grupo; y que deseamos hacer una función que devuelva todos los datos de los estudiantes de un determinado grupo, sería:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE OR REPLACE VIEW mi_vista AS
 SELECT Grupo.id, Estudiante.nombre, Estudiante.Edad
   FROM Grupo JOIN Estudiante on (Estudiante.grupoId = Grupo.Id);
 
----  hasta aquí tienes una vista que te devuelve todo, sin filtros, luego hacemos la Función:
 
CREATE OR REPLACE FUNCTION mi_funcion(nombreGrupo character varying)
  RETURNS mi_vista AS
$BODY$
      SELECT Grupo.id, Estudiante.nombre, Estudiante.Edad
       FROM Grupo JOIN Estudiante on (Estudiante.grupoId = Grupo.Id)
      WHERE Grupo.nombre = $1;
$BODY$
LANGUAGE sql VOLATILE;


Quiero que te fijes bien en lo que sucede en la segunda línea de la función:
RETURNS mi_vista AS ------ aquí lo que estamos diciendo es que la función devolverá una tabla que tiene la misma estructura que la vista "mi_vista".



Espero haberte ayudado en algo.
Un GigaSaludo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar