Este minitutorial tiene como objetivo captar todos los conceptos dictados en cada sesión en el curso de Base de Datos Avanzado II, así como brindar apoyo a los alumnos de la carrera técnica de Computación e Informática, que por algún motivo no hayan asistido a clases.
UNIDAD 4. Programación en Oracle
Logro de la Unidad de Aprendizaje
Al término de la unidad, el alumno construye programas estructurados utilizando el lenguaje PL/SQL dentro del manejador de base de datos Oracle. Incorpora cursores para procesar grandes volúmenes de información y gestiona los posibles errores de ejecución con el uso de excepciones.
Temario
4.1 Tema 6: PROGRAMACIÓN PL/SQL
4.1.1 Introducción a Oracle PL/SQL
4.1.2 Tipos de datos en PL/SQL
4.1.3 Estructuras de Bloques de PL/SQL
4.1.4 Sentencias SQL en PL/SQL
1. /*
Sesión06 – Sentencias SQL y PL/SQL
Estudiante: José Luis Toro Alcarraz
Curso: Base de Datos Avanzado II
Correo:i201010865@cibertec.edu.pe
*/
Objetivos de la sesión.
Acceder a datos desde un bloque Oracle utilizando SQL.
Usar adecuadamente el control de transacciones.
1) Instrucciones DML en PL/SQL.
2) Control de Transacciones.
1) Instrucciones DML en PL/SQL.
a) Instrucción SELECT.
Extrae datos de la base de datos y los almacena en variables PL/SQL.
La consulta debe devolver siempre un solo registro.
La forma general de una instrucción SELECT es :
SELECT lista_seleccion INTO lista_variables ó registro_PL/SQL
FROM referencia_tabla
WHERE claúsula_where;
lista_selección: Lista de columnas que se desea seleccionar.
lista_variables: Variables PL/SQL donde se almacenarán los elementos de la lista de
selección.
registro_PL/SQL: Está compuesto por campos que correspondan con la lista de
selección.
referencia_tablas: Identifica la tabla o las tablas de donde se extraerán los datos.
claúsula_where: Criterios para la selección de registros.
b) Instrucción INSERT.
Inserta un registro en una tabla.
La forma general de una instrucción INSERT es :
INSERT INTO tabla [ ( lista_columnas ) ]
VALUES lista_valores ó sentencia_select;
tabla: Nombre de la tabla donde se desea insertar el nuevo registro.
lista_columnas: Listado de columnas del registro que se insertará.
lista_valores: Valores que se insertarán en la columnas indicadas en la lista.
sentencia_select: Subconsulta que devuelve registros a insertarse en la tabla.
2. Ejemplo:
SQL>
DECLARE
V_DEPTNO
DEPT.DEPTNO%TYPE;
BEGIN
SELECT SEQ_DEPT.NEXTVAL INTO V_DEPTNO
FROM DUAL;
-- añade una fila a la tabla dept
INSERT INTO DEPT (DEPTNO,DNAME,LOC)
VALUES (V_DEPTNO,'SISTEMAS','LIMA');
-- añade una segunda fila usando directamente el numero de secuencia
INSERT INTO DEPT (DEPTNO,DNAME,LOC)
VALUES (SEQ_DEPT.NEXTVAL,'HELP DESK','LIMA');
END;
/
c) Instrucción UPDATE.
Actualiza registros de una tabla.
La forma general de una instrucción UPDATE es :
UPDATE tabla
SET nombre_columna = valor [, nombre_columna2 = valor2 … ]
WHERE cláusula_where;
tabla : Nombre de la tabla que se desea actualizar.
nombre_columna : Nombre de la columna a actualizar.
valor : Valor a actualizar en la columna.
claúsula_where : Criterios para la selección de registros.
Ejemplo:
SQL>
DECLARE
V_INCREMENTO
NUMBER(6):=1500;
BEGIN
-- aumentamos el salario a todos los empleados
-- del departamento con código 20
UPDATE EMP
SET SAL = SAL + V_INCREMENTO
WHERE DEPTNO = 20;
END;
/
d) Instrucción DELETE.
3. Elimina registros de una tabla.
La forma general de una instrucción DELETE es:
DELETE FROM tabla
WHERE cláusula_where;
tabla : Nombre de la tabla de la cual se van a eliminar registros.
claúsula_where : Criterios para la selección de registros.
Ejemplo:
SQL>
BEGIN
-- borramos ordenes antiguas
DELETE FROM ORD
WHERE SHIPDATE < TO_DATE('01.06.1986','DD.MM.YYYY')
END;
/
2) Control de Transacciones.
a) Transacción.
Una transacción es una serie de instrucciones SQL que se completan o fallan como unidad
(Mantener la integridad de los datos (Consistencia)).
Son un componente estándar de la base de datos, y sirven para evitar la inconsistencia de
los datos.
La transacción termina con las instrucciones COMMIT o ROLLBACK.
b) Commit.
Cuando se ejecuta una instrucción COMMIT se termina la transacción.
Se hace permanente todo el trabajo realizado por la transacción.
Otras sesiones pueden ver los cambios realizados por esta transacción.
Se liberan todos los bloqueos establecidos por la transacción.
Ejemplo:
SQL>
DECLARE
V_DEPTNO
DEPT.DEPTNO%TYPE;
BEGIN
SELECT SEQ_DEPT.NEXTVAL INTO V_DEPTNO
FROM DUAL;
-- añade una fila a la tabla dept
4. INSERT INTO DEPT (DEPTNO,DNAME,LOC)
VALUES (V_DEPTNO,'SISTEMAS','LIMA');
-- añade una segunda fila usando directamente el numero de secuencia
INSERT INTO DEPT (DEPTNO,DNAME,LOC)
VALUES (SEQ_DEPT.NEXTVAL,'HELP DESK','LIMA');
COMMIT;
END;
/
c) Rollback.
Cuando se ejecuta una instrucción ROLLBACK se termina la transacción.
Se deshace todo el trabajo realizado por la transacción, como si no se hubieran ejecutado
las instrucciones correspondientes.
Se liberan todos los bloqueos establecidos por la transacción.
Ejemplo:
SQL>
DECLARE
V_DEPTNO
DEPT.DEPTNO%TYPE;
BEGIN
SELECT SEQ_DEPT.NEXTVAL INTO V_DEPTNO
FROM DUAL;
-- añade una fila a la tabla dept
INSERT INTO DEPT (DEPTNO,DNAME,LOC)
VALUES (V_DEPTNO,'SISTEMAS','LIMA');
-- añade una segunda fila usando directamente el numero de secuencia
INSERT INTO DEPT (DEPTNO,DNAME,LOC)
VALUES (SEQ_DEPT.CURRVAL,'HELP DESK','LIMA');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('HUBO UN ERROR EN EL PROGRAMA.');
ROLLBACK;
END;
/