Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PROCEDURE INSCRIPCION_MATERIAS(CODIGO INTEGER, p_id IN OUT MyIdRec, p_data IN OUT MyDataRec)
- IS
- TYPE t_cadena IS VARRAY(100) OF VARCHAR2(100);
- v_lista t_cadena:= t_cadena();
- TYPE t_codigo IS VARRAY(100) OF INTEGER;
- v_codigo t_codigo:= t_codigo();
- CARRERA INTEGER;
- EXISTENCIA_MATRICULA INTEGER;
- MATERIAS_INSCRITAS INTEGER;
- INDICE NUMBER:=0;
- BEGIN
- SELECT COUNT(*) INTO EXISTENCIA_MATRICULA FROM MATRICULAS WHERE CODALUMNO=CODIGO;
- IF (EXISTENCIA_MATRICULA = 1) THEN
- SELECT CODCARRERA INTO CARRERA FROM MATRICULAS WHERE CODALUMNO=CODIGO;
- SELECT COUNT(*) INTO MATERIAS_INSCRITAS FROM INSCRIPCION WHERE CODALUMNO=CODIGO;
- IF (MATERIAS_INSCRITAS = 0) THEN
- FOR I IN ( SELECT M.CODMATERIA,M.NOMBRE_MATERIA FROM MATERIAS M INNER JOIN CICLO CI ON
- M.CODCICLO=CI.CODCICLO WHERE M.CODCARRERA=CARRERA AND M.PRE_REQUISITO=0 ORDER BY CI.CICLO ) LOOP
- INDICE:= INDICE +1 ;
- v_codigo.extend;
- v_codigo(INDICE):= I.CODMATERIA;
- v_lista.extend;
- v_lista(INDICE):= I.NOMBRE_MATERIA;
- END LOOP;
- p_id.DELETE;
- p_data.DELETE;
- FOR K IN 1..v_lista.COUNT LOOP
- p_id.extend;
- p_id(k) := v_codigo(K);
- p_data.extend;
- p_data(k) := v_lista(K);
- END LOOP;
- END IF;
- ELSIF (EXISTENCIA_MATRICULA > 1) THEN
- SELECT CODCARRERA INTO CARRERA FROM MATRICULAS WHERE CODALUMNO=CODIGO AND ROWNUM=1;
- SELECT COUNT(*) INTO MATERIAS_INSCRITAS FROM INSCRIPCION WHERE CODALUMNO=CODIGO;
- IF (MATERIAS_INSCRITAS > 0) THEN
- FOR I_MT IN (SELECT CODINSCRIPCION FROM INSCRIPCION WHERE CODALUMNO=CODIGO)LOOP /* EXTRAYECTO MATERIAS INSCRITAS */
- /* COMPROBANDO EL ESTADO DE LAS MATERIAS APROBADA O NO APROBADA */
- FOR I_ESTADO IN (SELECT IC.CODMATERIA, SUM(N.PROMEDIO)/ 3 AS NF FROM NOTAS N
- INNER JOIN INSCRIPCION IC ON N.CODINSCRIPCION = IC.CODINSCRIPCION WHERE N.CODINSCRIPCION=I_MT.CODINSCRIPCION GROUP BY IC.CODMATERIA) LOOP
- IF (I_ESTADO.NF >=6) THEN
- FOR I_LISTA IN (SELECT CODMATERIA,NOMBRE_MATERIA FROM MATERIAS WHERE CODCARRERA=CARRERA AND PRE_REQUISITO=I_ESTADO.CODMATERIA)
- LOOP
- INDICE:= INDICE +1 ;
- v_codigo.extend;
- v_codigo(INDICE):= I_LISTA.CODMATERIA;
- v_lista.extend;
- v_lista(INDICE):= I_LISTA.NOMBRE_MATERIA;
- END LOOP;
- END IF;
- END LOOP;
- END LOOP;
- FOR K IN 1..v_lista.COUNT LOOP
- p_id.extend;
- p_id(k) := v_codigo(K);
- p_data.extend;
- p_data(k) := v_lista(K);
- END LOOP;
- END IF;
- END IF;
- END;
- /
Advertisement
Add Comment
Please, Sign In to add comment