-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClase 8 PL-SQL.sql
More file actions
123 lines (49 loc) · 2.12 KB
/
Clase 8 PL-SQL.sql
File metadata and controls
123 lines (49 loc) · 2.12 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
-- BLOQUE ANONIMO
-- UN BLOQUE ANÓNIMO ES UN FRAGMENTO DE CÓDIGO QUE NO TIENE NOMBRE, LO QUE SIGNIFICA QUE NO SE ALMACENA EN LA BASE DE DATOS COMO UN PROCEDIMIENTO, FUNCIÓN O PAQUETE.
-- SE UTILIZA PRINCIPALMENTE PARA EJECUTAR CÓDIGO EN UNA SESIÓN SIN NECESIDAD DE DECLARAR UNA ESTRUCTURA PERMANENTE EN LA BASE DE DATOS.
-- SINTAXIS:
-- DECLARATIVO (OPCIONAL) <-- SIRVE PARA DECLARAR VARIABLES Y TIPOS DE DATOS
-- EJECUTABLE <-- ES DONDE SE EJECUTA EL CODIGO
-- EXCEPCIONES (OPCIONAL) <-- MANEJA ERRORES QUE SE HAN PRODUCIDO DURANTE LA EJECUCION
-- EJEMPLO 1:
DECLARE
NOMBRE VARCHAR2(50);
BEGIN
NOMBRE := 'Enrique';
DBMS_OUTPUT.PUT_LINE('Hola, ' || NOMBRE); -- IMPRIMIMOS EL VALOR EN LA CONSOLA
END;
-- EJEMPLO 2:
DECLARE
NUMERO1 NUMBER := 10;
NUMERO2 NUMBER := 0; -- ESTE VALOR GENERARÁ UN ERROR DE DIVISIÓN POR CERO
RESULTADO NUMBER;
BEGIN
RESULTADO := NUMERO1 / NUMERO2;
DBMS_OUTPUT.PUT_LINE('El resultado es: ' || RESULTADO);
EXCEPTION
WHEN ZERO_DIVIDE THEN -- SI OCURRE UN ERROR DE DIVISIÓN POR CERO
DBMS_OUTPUT.PUT_LINE('Error: No se puede dividir entre cero.');
WHEN OTHERS THEN -- SI OCURRE CUALQUIER OTRO ERROR
DBMS_OUTPUT.PUT_LINE('Error desconocido: ' || SQLERRM);
END;
-- EJEMPLO 3:
-- TABLA:
CREATE TABLE ACTORES_TEMP (
ACTOR_ID NUMBER PRIMARY KEY,
NOMBRE VARCHAR2(50),
NACIONALIDAD VARCHAR2(50)
);
-- DATOS:
INSERT INTO ACTORES_TEMP (ACTOR_ID, NOMBRE, NACIONALIDAD) VALUES (1, 'Vin Gasoil', 'Estadounidense');
INSERT INTO ACTORES_TEMP (ACTOR_ID, NOMBRE, NACIONALIDAD) VALUES (2, 'Scarlett Johansson', 'Estadounidense');
-- BLOQUE ANONIMO:
DECLARE
V_ID NUMBER;
V_NOMBRE VARCHAR2(50);
V_NACIONALIDAD VARCHAR2(50);
BEGIN
SELECT ACTOR_ID, NOMBRE, NACIONALIDAD INTO V_ID, V_NOMBRE, V_NACIONALIDAD
FROM ACTORES_TEMP
WHERE NOMBRE = 'Vin Gasoil';
DBMS_OUTPUT.PUT_LINE('El actor ' || V_NOMBRE || ' con ID ' || V_ID || ' es de nacionalidad ' || V_NACIONALIDAD || '.');
END;