asignacion tipo record

From: "P(at)blo Villad(at)" <andresv50(at)hotmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: asignacion tipo record
Date: 2005-10-24 20:53:38
Message-ID: BAY111-F33BBC978CAC18D4BB71908B3770@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos......

tengo el siguiente problema...
la siguiente funcion me retorna los datos de acuerdo a las condiciones q se
cumplan.

CREATE OR REPLACE FUNCTION fdatos_pre_academica1 (varchar, varchar) returns
setof tconsulta_pre_academica1 AS'

DECLARE
registroacad record;
divacad record;

BEGIN

FOR divacad IN SELECT y.dd_dvsion from pres_servicios_academico x join
dependencia_division y on (y.dd_cdigo=x.psera_dd_cdigo and
y.dd_cdigo=x.psera_dd_cdigo) where x.psera_emp_nidntfccion=$1 and
x.psera_tpser_cdigo=$2 and x.psera_estado=\'t\'

LOOP

IF (divacad.dd_dvsion =\'Pregrado\') THEN

SELECT x.psera_emp_nidntfccion, x.psera_tpser_cdigo,
x.psera_nmero, x.psera_cactivo, x.psera_con_ded_cdigo, x.psera_dd_cdigo,
y.dd_dpdncia, y.dd_dvsion, x.psera_pro_cdigo, z.pro_nmbre, x.psera_objeto,
x.psera_fincio, x.psera_ftrmncion, x.psera_ffrma, x.psera_drcion,
x.psera_vgncia, x.psera_hctgria, x.psera_cat_cdigo,
b.cext_nmbre,x.psera_vlrhora, x.psera_thras, x.psera_hcruce,
x.psera_vlrhcruce, x.psera_vtotal, x.psera_antcipo, x.psera_ppago,
x.psera_vantcipo, x.psera_rsltado, x.psera_estado INTO registroacad FROM
pres_servicios_academico x join dependencia_division y ON
(y.dd_cdigo=x.psera_dd_cdigo and y.dd_cdigo=x.psera_dd_cdigo) join programa
z ON (z.pro_dd_cdigo=x.psera_dd_cdigo and z.pro_cdigo=x.psera_pro_cdigo)
join categoria_extcultural b on (x.psera_cat_cdigo=b.cext_cdigo) WHERE
x.psera_emp_nidntfccion=$1 and x.psera_tpser_cdigo=$2 and
x.psera_estado=\'t\' and y.dd_dvsion=\'Pregrado\'

ELSIF (divacad.dd_dvsion =\'Postgrado\') THEN

SELECT x.psera_emp_nidntfccion, x.psera_tpser_cdigo,
x.psera_nmero, x.psera_cactivo, x.psera_con_ded_cdigo, x.psera_dd_cdigo,
y.dd_dpdncia, y.dd_dvsion, x.psera_pro_cdigo, z.pro_nmbre, x.psera_objeto,
x.psera_fincio, x.psera_ftrmncion, x.psera_ffrma, x.psera_drcion,
x.psera_vgncia, x.psera_hctgria, x.psera_cat_cdigo, b.cpos_nmbre,
x.psera_vlrhora, x.psera_thras, x.psera_hcruce, x.psera_vlrhcruce,
x.psera_vtotal, x.psera_antcipo, x.psera_ppago, x.psera_vantcipo,
x.psera_rsltado, x.psera_estado INTO registroacad FROM
pres_servicios_academico x join dependencia_division y ON
(y.dd_cdigo=x.psera_dd_cdigo and y.dd_cdigo=x.psera_dd_cdigo) join programa
z ON (z.pro_dd_cdigo=x.psera_dd_cdigo and z.pro_cdigo=x.psera_pro_cdigo)
join categoria_postgrados b on (x.psera_cat_cdigo=b.cpos_cdigo) WHERE
x.psera_emp_nidntfccion=$1 and x.psera_tpser_cdigo=$2 and
x.psera_estado=\'t\' and y.dd_dvsion=\'Postgrado\'

END IF;
return next registroacad;
end loop;
return;
END;'
LANGUAGE 'plpgsql';

ahora pasa lo siguiente...
si en la primera consulta se cumple q existen varios registro de tipo
pregrado el ejecuta las condiciones pero sobreescribe los registro
encontrados con el ultimo registro q cumple la condicion, existe alguna
forma de hacer acumulativo la variable registroacad (variable de tipo
record) para q no sobreescriba los datos y pueda realizar el retorno de
manera adecuada..

Si existe alguna otra forma de hacer la consulta se los agradeceria de a
mucho..
o como puedo asignar esa variable a otra y asi acumular los datoss...

Muchas Gracias....
pdta.. ES URGENTE......

Muchas Gracias

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message joel martinez 2005-10-24 21:14:21 Ayuda
Previous Message Alfredo Rico 2005-10-24 19:26:12 Agregar funcionalidades a PostgreSQL después de la instalación..