CONSULTA DINAMICA EN SP(INFORMIX)
Publicado por Cistian Lincopi (1 intervención) el 30/10/2009 20:55:28
Como puedo generar una consulta dinamica en INFORMIX emulando SP_EXECUTESQL del Microsoft Sql.
Actualmente estoy creando tantos selects como condiciones se me presentan, ejemplo:
create procedure sp_alumnos(carrera char(3), orden char(1))
returning decimal(7,0), char(3), char(50);
-- tod=TODAS
if carrera<>"tod" AND orden = "A" then
SELECT alum_nmat, alum_carr, alum
from alumnos
WHERE alum_carr = carrera
ORDER BY alum,alum_carr
INTO TEMP tmp1;
END IF;
if carrera<>"tod" AND orden = "C" then
SELECT alum_nmat, alum_carr, alum
from alumnos
WHERE alum_carr = carrera
ORDER BY alum_carr,alum
INTO TEMP tmp1;
END IF ;
if carrera="tod" AND orden = "A" then
SELECT alum_nmat, alum_carr, alum
from alumnos
ORDER BY alum,alum_carr
INTO TEMP tmp1;
END IF;
if carrera="tod" AND orden = "C" then
SELECT alum_nmat, alum_carr, alum
from alumnos
ORDER BY alum_carr,alum
INTO TEMP tmp1;
END IF ;
FOREACH
.
.
.
END FOREACH;
DROP TABLE tmp1;
end procedure;
Actualmente estoy creando tantos selects como condiciones se me presentan, ejemplo:
create procedure sp_alumnos(carrera char(3), orden char(1))
returning decimal(7,0), char(3), char(50);
-- tod=TODAS
if carrera<>"tod" AND orden = "A" then
SELECT alum_nmat, alum_carr, alum
from alumnos
WHERE alum_carr = carrera
ORDER BY alum,alum_carr
INTO TEMP tmp1;
END IF;
if carrera<>"tod" AND orden = "C" then
SELECT alum_nmat, alum_carr, alum
from alumnos
WHERE alum_carr = carrera
ORDER BY alum_carr,alum
INTO TEMP tmp1;
END IF ;
if carrera="tod" AND orden = "A" then
SELECT alum_nmat, alum_carr, alum
from alumnos
ORDER BY alum,alum_carr
INTO TEMP tmp1;
END IF;
if carrera="tod" AND orden = "C" then
SELECT alum_nmat, alum_carr, alum
from alumnos
ORDER BY alum_carr,alum
INTO TEMP tmp1;
END IF ;
FOREACH
.
.
.
END FOREACH;
DROP TABLE tmp1;
end procedure;
Valora esta pregunta


0