Tengo esto 

 

CREATE OR REPLACE FUNCTION anosaprobados ()

RETURNS SETOF respuesta_anoscursados AS

$BODY$

DECLARE

RESPUESTA RECORD;

BEGIN

FOR RESPUESTA IN (

SELECT pro.rut_alumno,inst.rdb,

  inst.nombre_instit,anes.nro_ano,

  pro.id_ano,(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 =
18018550

  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 = 18018550  and pro.situacion_final = 1 and pro.promedio >
0 and pro.asistencia > 0

ORDER BY anes.nro_ano) 

LOOP

RETURN NEXT RESPUESTA;

END LOOP;

RETURN;

END;

$BODY$

LANGUAGE plpgsql;

 

Con esto 

 

CREATE TYPE respuesta_anoscursados AS 

(rut_alumno int4,rdb int4,nombre_instit text,nro_ano int4,id_ano
int4,cursoletra text)

 

 

Me retorna esto 

 

ERROR:  wrong record type supplied in RETURN NEXT

CONTEXT:  PL/pgSQL function "anosaprobados" line 17 at return next

 

Como lo puedo arreglar por favor 

Responder a