RE: Error al Crear Funcion Atravez de PHPPGADMIN

From: "Patricio Cardenas Garay" <pcardenas(at)colegiointeractivo(dot)com>
To: "'Jaime Casanova'" <jaime(at)2ndquadrant(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Error al Crear Funcion Atravez de PHPPGADMIN
Date: 2010-12-09 17:53:21
Message-ID: !&!AAAAAAAAAAAYAAAAAAAAAGSqVoGYTtJLnSkbDghUhpvCgAAAEAAAAMM/XX6BKf1KjMgGrOfGfkYBAAAAAA==@colegiointeractivo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

-----Mensaje original-----
De: jcasanov(at)systemguards(dot)com(dot)ec [mailto:jcasanov(at)systemguards(dot)com(dot)ec] En
nombre de Jaime Casanova
Enviado el: Jueves, 09 de Diciembre de 2010 14:30
Para: Patricio Cardenas Garay
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Error al Crear Funcion Atravez de PHPPGADMIN

On Thu, Dec 9, 2010 at 7:34 AM, Patricio Cardenas Garay
<pcardenas(at)colegiointeractivo(dot)com> wrote:
> SQL error:
>
> ERROR:  plpgsql functions cannot take type record
>
> In statement:
>
> CREATE FUNCTION "anosaprobados" (OUT x integer,OUT rdb1 integer,OUT
id_ano1
> integer,OUT rut_alumno1 integer,OUT nombre_instit1 text,OUT nro_ano1
> integer,OUT cursoletra1 text,OUT RESPUESTA record) RETURNS SETOF record AS
> 'DECLARE
>

No puedes declarar un parametro de salida como "record" (es el caso de
tu ultimo parametro), eso es porque record es generico y postgres
necesita saber que esta retornando

--
Jaime Casanova         www.2ndQuadrant.com
Professional PostgreSQL: Soporte y capacitación de PostgreSQL

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guido Ojeda 2010-12-09 19:27:00 No me conecta a bbdd postgresql 7.4 :-S
Previous Message MoNiLlO 2010-12-09 17:42:03 PL/PGSQL: Lanzar comandos del S.O.