Buen Hombre me podrías ayudar con esto

Bueno agregué el record en la salida tratando de sacar este otro Error

 

Error de SQL:

 

ERROR:  wrong record type supplied in RETURN NEXT

CONTEXT:  PL/pgSQL function "anosaprobados" line 33 at RETURN NEXT

 

 

La consulta es esta

***************************************

select * from anosaprobados(17938327)

 

 

La Funcion es 

****************************************

CREATE OR REPLACE FUNCTION anosaprobados (integer)

RETURNS SETOF respuesta_anoscursados AS

$BODY$

DECLARE

RESPUESTA RECORD;

rutingresado ALIAS FOR $1;

BEGIN

  

  FOR RESPUESTA IN (

      

  SELECT 

  inst.rdb as insti,

  pro.id_ano as id_año,

  pro.rut_alumno as rut_alumno,

  inst.nombre_instit as nombreinstitucion,

  anes.nro_ano as numero_año,

  (cu.grado_curso || '-' || cu.letra_curso) as cursoletra

  FROM promocion pro

  inner join institucion inst on inst.rdb = pro.rdb

  inner join ano_escolar anes on anes.id_ano = pro.id_ano

  inner join matricula ma on ma.id_ano = pro.id_ano and ma.rut_alumno =
17980141

  inner join curso cu on cu.id_ano = anes.id_ano and cu.ensenanza > 110 and
cu.id_curso = ma.id_curso

  WHERE 

  pro.rut_alumno = 17980141 and pro.situacion_final = 1 and pro.promedio > 0
and pro.asistencia > 0

  UNION

  SELECT 

  0 as insti,

  0 as id_año,

  conce.rut_alumno ,

  conce.institucion,

  conce.ano,

  (conce.curso || '-' || conce.letra) as cursoletra

  FROM concentracion_notas conce where conce.rut_alumno = 17980141   )

   

  LOOP

      RETURN NEXT RESPUESTA;

  END LOOP;

  

RETURN;

END;

$BODY$

LANGUAGE plpgsql;

 

Con esto 

 

CREATE TYPE respuesta_anoscursados AS 

(rut_alumno integer,rdb integer,nombre_instit char(1000),nro_ano
integer,id_ano integer,cursoletra varchar(2))

 

 

Mmm esto es primera vez que lo ago estoy aprendiendo.

 :D gracias

 

Responder a