-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGrupal.sql
More file actions
63 lines (59 loc) · 1.95 KB
/
Grupal.sql
File metadata and controls
63 lines (59 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
CREATE OR REPLACE PROCEDURE borrar_centro(
v_fuente IN CENTROS.ID%TYPE, v_destino IN CENTROS.ID%TYPE
)AS
E_FALLO_FUENTE EXCEPTION;
E_FALLO_DESTINO EXCEPTION;
E_FALLO_TRANSFERIR EXCEPTION;
V_TEMP CENTROS.ID%TYPE;
BEGIN
SELECT ID INTO V_TEMP FROM CENTROS WHERE ID = v_fuente;
IF SQL%NOTFOUND THEN
RAISE E_FALLO_FUENTE;
ELSE
SELECT ID into V_TEMP FROM CENTROS WHERE ID = v_destino;
IF SQL%NOTFOUND THEN
RAISE E_FALLO_DESTINO;
ELSE
UPDATE TRABAJADOR SET ID=v_destino WHERE ID=v_fuente;
IF SQL%NOTFOUND THEN
RAISE E_FALLO_TRANSFERIR;
END IF;
END IF;
END IF;
EXCEPTION
WHEN E_FALLO_FUENTE THEN
RAISE_APPLICATION_ERROR(-20111,'No se ha encontrado el centro a borrar.');
WHEN E_FALLO_DESTINO THEN
RAISE_APPLICATION_ERROR(-20111,'No se ha encontrado el centro de destino.');
when E_FALLO_TRANSFERIR THEN
RAISE_APPLICATION_ERROR(-20112,'Error al transferir los trabajadores.');
END;
CREATE OR REPLACE PROCEDURE buscar_centro_por_nombre(
v_nCentro IN CENTROS.NOMBRE%TYPE, v_idCentro OUT CENTROS.IDCENTRO%TYPE
)AS
E_CENTRO_ERRONEO EXCEPTION;
BEGIN
SELECT IDCENTRO INTO v_idCentro FROM CENTRO WHERE UPPER(NOMBRE) LIKE UPPER(V_NCENTRO);
IF SQL%NOTFOUND THEN
RAISE E_CENTRO_ERRONEO;
END IF;
EXCEPTION
WHEN E_CENTRO_ERRONEO THEN
RAISE_APPLICATION_ERROR(-20111,'No se ha encontrado el centro.');
END;
CREATE OR REPLACE FUNCTION buscar_centro_por_nombre
(v_nCentro IN CENTROS.NOMBRE%TYPE)
return NUMBER
IS
v_idCentro CENTROS.IDCENTRO%TYPE;
E_CENTRO_ERRONEO EXCEPTION;
BEGIN
SELECT IDCENTRO INTO v_idCentro FROM CENTRO WHERE UPPER(NOMBRE) LIKE UPPER(V_NCENTRO);
IF SQL%NOTFOUND THEN
RAISE E_CENTRO_ERRONEO;
END IF;
RETURN v_idCentro;
EXCEPTION
WHEN E_CENTRO_ERRONEO THEN
RAISE_APPLICATION_ERROR(-20111,'No se ha encontrado el centro.');
END buscar_centro_por_nombre;