From: | "Patricio Cardenas Garay" <pcardenas(at)colegiointeractivo(dot)com> |
---|---|
To: | "'Julio Cesar Rodriguez Dominguez'" <jurasec(at)gmail(dot)com> |
Cc: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: Ayuda con funcion retorno de datos ejecutando select |
Date: | 2010-12-07 18:50:13 |
Message-ID: | !&!AAAAAAAAAAAYAAAAAAAAAGSqVoGYTtJLnSkbDghUhpvCgAAAEAAAAKOVsI+KbHlGniwmmnLG+YIBAAAAAA==@colegiointeractivo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Eso era Gracias Master
;D
-----Mensaje original-----
De: Julio Cesar Rodriguez Dominguez [mailto:jurasec(at)gmail(dot)com]
Enviado el: Martes, 07 de Diciembre de 2010 15:36
Para: Patricio Cardenas Garay
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Ayuda con funcion retorno de datos ejecutando
select
2010/12/7 Patricio Cardenas Garay <pcardenas(at)colegiointeractivo(dot)com>:
>
>
>
>
> 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
El problema está en los tipos de datos que se estan regresando dentro
del record respuesta, para asegurar que estas regresar el tipo de dato
que esta esperando según el tipo de dato que creaste, haz un cast a
todas las columnas del select.
Por otra parte, podrias hacer la declaración de los parametros de
salida en la misma función, para evitar crear un tipo de dato nuevo:
CREATE OR REPLACE FUNCTION anosaprobados ( OUT rut_alumno int4, OUT
rdb int4, OUT nombre_instit text, OUT nro_ano int4, OUT id_ano int4,
OUT cursoletra text ) RETURNS SETOF record 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;
From | Date | Subject | |
---|---|---|---|
Next Message | Edwin Perez Lozano | 2010-12-08 11:52:15 | Re: Problema instalando Pgpool |
Previous Message | Julio Cesar Rodriguez Dominguez | 2010-12-07 18:36:02 | Re: Ayuda con funcion retorno de datos ejecutando select |