Académique Documents
Professionnel Documents
Culture Documents
Facultad de Ciencia
Departamento de Matemtica y Ciencia de la Computacin
Licenciatura en Ciencia de la Computacin
Taller 5
PROGRAMACIN DE PROCEDIMIENTOS ALMACENADOS EN
PL/SQL ORACLE
Desarrollo de Software II
ndice
PRIMERA PARTE: REGISTRO DE ERRORES 1
Item 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Item 1.1
Construya la tabla auxiliar AUX_ERROR en su esquema de usuario
Item 2.1
El procedimiento almacenado PRO_MANT_FACULTAD, el cual permita crear, actualizar, y elimi-
nar facultades. Los parmetros del procedimiento son: cdigo y descripcin de la facultad, y tipo de
transaccin. Controlar las siguientes situaciones (registrando el error en la tabla AUX_ERROR):
Si la facultad que se requiere crear ya existe.
Si la facultad que se requiere eliminar tiene dependencias de registros en otra tabla.
Si algunos de los parmetros es de mayor longitud que la especificada en la tabla FACULTAD.
5 begin
6 if p_trans = 'C' then
7 begin
8 lon_aux:=1;
9 if p_cod < 9 then
10 if length(p_nom)<100 then
11 lon_aux:=0;
12 end if;
13 end if;
14 end;
15 begin
16 select count(fac_cod) into v_aux
17 from facultad
18 where fac_cod = p_cod;
19 commit;
20 end;
21 if v_aux = 0 then
22 if lon_aux=0 then
23 begin
24 insert into facultad
25 values (p_cod, p_nom);
26 commit;
27 end;
28 end if;
29 end if;
30 if v_aux <> 0 then
31 begin
32 insert into aux_error
33 values ('La facultad cod: '||p_cod||' ya existe', p_trans,
, 'pro_mantenedor_facultad', sysdate);
34 commit;
35 end;
36 end if;
37 if lon_aux <> 0 then
38 begin
39 insert into aux_error
3
40 values ('La datos ingresados no cumplen con las indicaciones ', p_trans,
, 'pro_mantenedor_facultad', sysdate);
41 commit;
42 end;
43 end if;
44
88 commit;
89 end;
4
Item 2.2
El procedimiento almacenado PRO_MANT_COMUNA, el cual permita crear, actualizar, y eliminar
comunas. Los parmetros del procedimiento son: cdigo y nombre de la comuna, cdigo de la regin
a la cual pertenece, y tipo de transaccin. Controlar las siguientes situaciones (registrando el error en
la tabla AUX_ERROR):
Si la comuna que se requiere crear ya existe.
Si la comuna que se requiere eliminar tiene dependencias de registros en otra tabla.
Si la regin a la que pertenece la comuna que se requiere crear no existe.
3 v_aux number;
4 reg_aux number;
5
6 begin
7 if p_trans = 'C' then
8 begin
9 select count(com_cod) into v_aux
10 from comuna
11 where com_cod = p_cod;
12 commit;
13 end;
14
15 begin
16 select count(reg_cod) into reg_aux
17 from region
18 where reg_cod = p_reg;
19 commit;
20 end;
21
22 if (v_aux = 0) then
23 if (reg_aux <> 0) then
24 begin
25 insert into comuna
26 values (p_cod, p_nom, p_reg);
27 commit;
28 end;
29 end if;
30 end if;
31
43 end;
44 end if;
45
52 begin
53 select count(col_comuna) into v_aux
54 from comuna, colegio
55 where col_comuna = p_cod;
56 commit;
57 end;
58
59 if v_aux = 0 then
60 begin
61 delete from comuna where com_cod = p_cod;
62 commit;
63 end;
64 else
65 begin
66 insert into aux_error
67 values ('La comuna cod: '||p_cod||' Tiene dependencias en otra tabla',
, p_trans, 'pro_mantenedor_comuna', sysdate);
68 commit;
69 end;
70 end if;
71
72 end if;
73 commit;
74
75 end;
6
Item 2.3
El procedimiento almacenado PRO_MANT_UNIDAD, el cual permita crear, eliminar, y actualizar
unidades acadmicas. Los parmetros del procedimiento son: cdigo y nombre de la unidad, cdigo
de facultad responsable, y tipo de transaccin. Controlar las siguientes situaciones (registrando el
error en la tabla AUX_ERROR):
Si la unidad que se requiere crear ya existe.
El cdigo de la unidad que se requiere crear debe ser mayor o igual a 10 y menor o igual a 90.
Si la unidad que se requiere eliminar tiene dependencias de registros en otra tabla.
No pueden existir unidades con el mismo nombre (es indiferente si el nombre est escrito en
maysculas/minsculas).
3 v_aux number;
4 nom_aux number;
5 largo_aux number;
6
8 begin
9 if p_trans = 'C' then
10
11 begin
12 largo_aux:=1;
13 if p_cod <= 90 then
14 if p_cod >= 10 then
15 largo_aux:=0;
16 end if;
17 end if;
18 end;
19
20 begin
21 select count(uni_cod) into v_aux
22 from unidad
23 where uni_cod = p_cod;
24 commit;
25 end;
26
27 begin
28 select count(uni_nom) into nom_aux
29 from unidad
30 where upper(UNI_NOM) = upper(p_nom);
31 commit;
32 end;
33
34 if (v_aux = 0) then
35 if (nom_aux = 0) then
36 if(largo_aux = 0) then
37 begin
38 insert into unidad
39 values (p_cod, p_nom, p_fac);
40 commit;
41 end;
42 end if;
7
43 end if;
44 end if;
45
71 begin
72 select count(car_unidad) into v_aux
73 from unidad, carrera
74 where car_unidad = p_cod;
75 commit;
76 end;
77
78 if v_aux = 0 then
79 begin
80 delete from unidad where uni_cod = p_cod;
81 commit;
82 end;
83 else
84 begin
85 insert into aux_error
86 values ('La unidad cod: '||p_cod||' Tiene dependencias en otra tabla',
, p_trans, 'pro_mantenedor_unidad', sysdate);
87 commit;
88 end;
89 end if;
90 end if;
91 commit;
92
93 end;
8
Item 3.1
El procedimiento almacenado PRO_LISTADO_COMUNAS_REG, que dado un cdigo de regin
como parmetro, permita mostrar por pantalla el listado de comunas pertenecientes a dicha regin,
ordenadas por el nombre de la comuna en orden ascendente:
Item 3.2
El procedimiento almacenado PRO_LISTADO_MAX_MIN_PTJES, que dado un cdigo de facultad
como parmetro, permita mostrar por pantalla el listado de puntajes mximo y mnimo de postula-
cin de todas las carreras de dicha facultad:
1 create or replace PROCEDURE "PRO_LISTADO_MAX_MIN_PTJES" (p_cod number) is
2
3 begin
4 FOR r_fila in (SELECT CAR_COD as cod, CAR_NOM as car,
5 max(PSC_PTJE_PONDERAD) as pmax, min(PSC_PTJE_PONDERAD) as pmin
6 FROM CARRERA, POST_CARR, UNIDAD, FACULTAD
7 WHERE CAR_UNIDAD = UNI_COD AND UNI_FACULTAD = p_cod AND
8 PSC_CARR = CAR_COD
9 GROUP BY CAR_COD, CAR_NOM
10 ORDER BY CAR_COD DESC) LOOP
11 dbms_output.put_line ('Cdigo ' || r_fila.cod ||' Carrera '|| r_fila.car ||
12 ' Ptje.Mx ' || r_fila.pmax || ' Ptje.Mn ' || r_fila.pmin);
13 END LOOP;
14 end;