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
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.. |