sesion06c - sentencias sql en pl-sql (oracle)

5
/* Sesión06 – Sentencias SQL y PL/SQL Estudiante: José Luis Toro Alcarraz Curso: Base de Datos Avanzado II Correo:[email protected] */ 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 :

Upload: jose-toro

Post on 13-Jun-2015

591 views

Category:

Education


5 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Sesion06c - Sentencias SQL en PL-SQL (Oracle)

/* Sesión06 – Sentencias SQL y PL/SQLEstudiante: José Luis Toro AlcarrazCurso: Base de Datos Avanzado IICorreo:[email protected]*/

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.

Ejemplo:

Page 2: Sesion06c - Sentencias SQL en PL-SQL (Oracle)

SQL> DECLARE

V_DEPTNO DEPT.DEPTNO%TYPE; BEGIN

SELECT SEQ_DEPT.NEXTVAL INTO V_DEPTNO FROM DUAL;

-- añade una fila a la tabla deptINSERT 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 20UPDATE EMP SET SAL = SAL + V_INCREMENTO WHERE DEPTNO = 20;

END; /

d) Instrucción DELETE.

Elimina registros de una tabla.

Page 3: Sesion06c - Sentencias SQL en PL-SQL (Oracle)

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 deptINSERT INTO DEPT (DEPTNO,DNAME,LOC)VALUES (V_DEPTNO,'SISTEMAS','LIMA');

Page 4: Sesion06c - Sentencias SQL en PL-SQL (Oracle)

-- 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 deptINSERT 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 THENDBMS_OUTPUT.PUT_LINE('HUBO UN ERROR EN EL PROGRAMA.');ROLLBACK;

END; /