Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porSebastián Herrera López Modificado hace 8 años
1
Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I - 425501 PL/SQL
2
Base de Datos I – PL/SQL PL/SQL PL/SQL es clasificado como un lenguaje procedimental, debido al uso de bucles, condicionales, y declaración de variables; su entrada y salida es a través de parámetros o medios intermedios. El lenguaje PL/SQL es una extensión del lenguaje SQL con características de los lenguajes de programación. Con PL/SQL la manipulacion de datos y las sentencias query de SQL son incluidas dentro de unidades procedimentales de código.
3
Base de Datos I – PL/SQL Estructura de Bloques de PL/SQL Secciones de un bloque PL/SQL
4
Base de Datos I – PL/SQL PL/SQL es portable. Permite declarar variables. Se puede programar con estructuras de control de lenguaje procedural. PL/SQL puede manejar errores. Fácil mantenimiento Mayor integridad y seguridad de los datos Mejor rendimiento Mayor claridad del código Ventajas de PL/SQL
5
Base de Datos I – PL/SQL
7
En tiempo de ejecución Para realizar una acción Para calcular un valor
8
Base de Datos I – PL/SQL Tipos de Programa en PL/SQL
9
Base de Datos I – PL/SQL Las constantes y las variables NOT NULL deben inicializarse
10
Base de Datos I – PL/SQL v_mgr NUMBER(6) DEFAULT 100; v_hire_date := '15-SEP-1999' v_city VARCHAR2(30) NOT NULL := 'Oxford'
11
Base de Datos I – PL/SQL Tipos de Dato Escalares Guardan un solo valor No tienen componentes internos CHAR [(longitud_máxima)] VARCHAR2 (longitud_máxima) LONG LONG RAW NUMBER [(precisión, escala)] BINARY_INTEGER PLS_INTEGER BOOLEAN
12
Base de Datos I – PL/SQL
13
v_name employees.last_name%TYPE; v_balance NUMBER(7,2); v_min_balance v_balance%TYPE := 10;
14
Base de Datos I – PL/SQL DECLARE v_flag BOOLEAN := FALSE; BEGIN v_flag := TRUE; END;
15
Base de Datos I – PL/SQL Funciones SQL en PL/SQL Están disponibles igual que en SQL: Funciones Numéricas Funciones de Carácter Funciones de Fecha y Hora GREATEST, LEAST No están disponibles: La función DECODE Funciones de Grupo
16
Base de Datos I – PL/SQL v_info := v_nombre||CHR(10)||’ tiene un ‘ ||’ salario de ‘|| to_char(v_salario,’999,999.99’)); v_nombre := LOWER(v_nombre); Conversión del nombre de un empleado a minúsculas Obtención del mayor valor de una lista v_mayor := GREATEST(v_val1, v_val2, …); Concatenación de la información de un empleado Funciones SQL en PL/SQL
17
Base de Datos I – PL/SQL DECLARE v_fecha VARCHAR2(30); BEGIN SELECT TO_CHAR(fingreso, ’MON.DD,YYYY’) INTO v_fecha FROM empleado WHERE empno = 100; END; / TO_CHAR(v, f) TO_DATE(c, f) TO_NUMBER(c, f) Conversión entre Tipos de Datos Se realizan conversiones de datos entre tipos compatibles Funciones de Conversión – TO_CHAR – TO_DATE – TO_NUMBER
18
Base de Datos I – PL/SQL Recomendaciones para el Desarrollo de Programas Adoptar una convención o estándar para el código de programas Palabras Reservadas en mayúsculas Identificadores en minúsculas Adoptar un estándar para los nombres de identificadores y otros objetos Documentar los programas y bloques haciendo uso de comentarios Asegurar legibilidad haciendo uso de indentación
19
Base de Datos I – PL/SQL Instrucciones SQL en PL/SQL SELECTLa instrucción SELECT permite recuperar filas de datos de la Base de Datos DMLLas instrucciones DML permiten realizar cambios a los datos en la Base de Datos COMMIT ROLLBACKSAVEPOINTSe pueden controlar las transacciones con el uso de los comandos COMMIT, ROLLBACK o SAVEPOINT Los atributos permiten determinar el status de los cursores implícitos PL/SQL no soporta las sentencias DDL (CREATE, ALTER Y DROP) ni las sentencias DCL (GRANT Y REVOKE).
20
Base de Datos I – PL/SQL Permite recuperar datos de la Base de Datos SELECT SELECT lista_columnas INTO INTO {nombre_variable [,nombre_variable,…] | variable_registro} FROM FROM tabla WHERE [WHERE condicion]; INTOLa cláusula INTO es obligatoria en una consulta dentro de un bloque PL/SQL La consulta debe retornar una y solo una fila de datos INTOEl número de columnas recuperadas debe coincidir en número y tipo con las variables de la cláusula INTO Instrucciones SQL en PL/SQL
21
Base de Datos I – PL/SQL DECLARE v_numdept NUMBER(2); v_ubicacion VARCHAR2(40); BEGIN SELECT SELECT numdept, ubicacion INTO INTO v_numdept, v_ubicacion FROM FROM departamento WHERE WHERE nombre = ‘INVESTIGACION’; END END; / Instrucciones SQL en PL/SQL
22
Base de Datos I – PL/SQL DECLARE v_sum_sal empleado.salario%TYPE; v_numdept VARCHAR2(40):= 01; BEGIN SELECTSUM() SELECT SUM(salario) INTO INTO v_sum_sal FROM FROM empleado WHERE WHERE numdept = v_numdept; END END; / Instrucciones SQL en PL/SQL
23
Base de Datos I – PL/SQL Manipulación de Datos usando PL/SQL Los cambios a la Base de Datos se realizan usando los comandos DML INSERT – INSERT: Agrega nuevas filas de datos UPDATE – UPDATE: Modifica filas de datos existentes DELETE – DELETE: Borra filas de datos existentes Estos comandos se utilizan de la misma manera que en SQL Se pueden incluir también las instrucciones COMMIT y ROLLBACK para controlar las transacciones
24
Base de Datos I – PL/SQL BEGIN INSERTINTO INSERT INTO empleado(empno, nombre, cargo, numdept) VALUES VALUES(seq_emp.NEXTVAL,‘JUAN JOSE’, ‘ANALISTA’, 01); END END; Inserción de Datos La siguiente instrucción agrega un nuevo empleado a la tabla de empleados usando una secuencia para obtener el código del empleado
25
Base de Datos I – PL/SQL La siguiente instrucción incrementa el salario de todos los empleados con cargo de ANALISTA DECLARE %TYPE v_increm empleado.salario%TYPE := 0.1; BEGIN UPDATE UPDATE empleado SET= SET salario = salario*(1 + v_increm); WHERE= WHERE cargo =‘ANALISTA’; END END; Actualización de Datos
26
Base de Datos I – PL/SQL La siguiente instrucción permite eliminar todos los empleados del departamento 4 DECLARE %TYPE v_numdept empleado.numdept%TYPE := 4; BEGIN DELETEFROM DELETE FROM empleado WHERE WHERE numdept = v_numdept; END END; Eliminación de Datos
27
Base de Datos I – PL/SQL Nombres de Identificadores y Columnas en PL/SQL Se debe utilizar nombres que no causen ambigüedad en la cláusula WHERE DECLARE nombre departamento.nombre%TYPE; numdept numdept departamento.numdept%TYPE := 1; ubicacion departamento.ubicacion%TYPE; BEGIN SELECT SELECT nombre, ubicacion INTO INTO nombre, ubicacion FROM FROM departamento WHEREnumdeptnumdept WHERE numdept = numdept; END END; Ambigüedad
28
Base de Datos I – PL/SQL COMMIT; SAVEPOINT nombre_punto; ROLLBACK [TO SAVEPOINT nombre_punto]; Instrucciones COMMIT y ROLLBACK Una transacción se inicia con la primera instrucción DML que se ejecuta y termina con una instrucción COMMIT o ROLLBACK completo Estas instrucciones terminan explícitamente una transacción
29
Base de Datos I – PL/SQL Ejercicios Crear un bloque PL/SQL que muestre por pantalla cuantos registros tiene la tabla Empleados. Crear un bloque PL/SQL que inserte una fila a la tabla empleados. Todos los datos debe ser solicitados por pantalla. Crear un bloque PL/SQL que actualice el nombre del registro insertado en el ejercicio anterior. Crear un bloque PL/SQL que elimine el registro insertado en el ejercicio anterior
30
Base de Datos I – PL/SQL Escribiendo Estructuras de Control Las estructuras de control se utilizan para indicar el flujo de control que deben seguir las instrucciones al momento de su ejecución Las estructuras de control pueden ser: Condicionales IF - THEN [ELSIF] [ELSE] - END IF; IteracionesLOOPFORWHILE CICLOS CON ETIQUETAS
31
Base de Datos I – PL/SQL IFTHEN IF condicion THEN instrucciones; ELSIFTHEN [ELSIF condicion THEN instrucciones;] ELSE [ELSE instrucciones;] ENDIF END IF; IFTHEN IF v_nombre = ‘CINDY’ THEN v_jefe := 100; ENDIF END IF; Sentencia IF
32
Base de Datos I – PL/SQL
34
IFTHEN IF condicion1 THEN instrucciones1; ELSE instrucciones2; ENDIF END IF; THEN IF condicion1 THEN instrucciones1; ELSE IFTHEN IF condicion2 THEN instrucciones2; ENDIF END IF; Sentencia IF
35
Base de Datos I – PL/SQL
38
Instrucción IF-THEN-ELSIF IFTHEN IF condicion1 THEN instrucciones1; ELSIFTHEN ELSIF condicion2 THEN instrucciones2; ELSIFTHEN ELSIF condicion3 THEN instrucciones3; … ELSE instrucciones; ENDIF END IF; IFTHEN IF v_num > 100 THEN v_num := v_num * 2; ELSIFTHEN ELSIF v_num >= 0.5 THEN v_num := v_num * 50; ELSE v_num := v_num * 0.3; ENDIF END IF;
39
Base de Datos I – PL/SQL
42
Ciclos Iterativos Las estructuras de control iterativas se utilizan para repetir la ejecución de un conjunto de instrucciones múltiples veces Hay tres tipos de estructuras iterativas Ciclo LOOP Básico Ciclo FOR Ciclo WHILE
43
Base de Datos I – PL/SQL WHEN La cláusula WHEN es una condición bolean de control que permitirá la salida del ciclo cuando sea verdadera LOOP LOOP -- Inicio del ciclo instrucciones; … EXITWHEN EXIT [WHEN condicion] -- Salida … ENDLOOP END LOOP; -- Fin del ciclo Ciclo LOOP Básico
44
Base de Datos I – PL/SQL DECLARE %TYPE v_orden orden.orden%TYPE := 600; NUMBER(2) v_cuantas NUMBER(2) := 1; BEGIN LOOP INSERTINTO INSERT INTO orden (orden, item) VALUES VALUES (v_orden, v_cuantas); EXITWHEN EXIT WHEN v_cuantas = 10; v_cuantas := v_cuantas + 1; v_orden := v_orden + 1; ENDLOOP END LOOP; Ciclo LOOP Básico
45
Base de Datos I – PL/SQL
46
El ciclo FOR posee un número de iteraciones predefinido La cláusula REVERSE indica que el índice disminuirá en cada iteración Linf indica el límite inferior y Lsup indica el límite superior El índice es declarado implícitamente FORINREVERSELOOP FOR contador IN [REVERSE] Linf.. Lsup LOOP instrucciones; … ENDLOOP END LOOP; Ciclo FOR
47
Base de Datos I – PL/SQL DECLARE %TYPE v_orden orden.orden%TYPE := 600; BEGIN FORINLOOP FOR I IN 1..10 LOOP INSERTINTO INSERT INTO orden (orden, item) VALUES VALUES (v_orden + I-1, I); ENDLOOP END LOOP; END END; Ciclo FOR
48
Base de Datos I – PL/SQL
49
La condición es evaluada al inicio de cada iteración El ciclo termina cuando la condición se evalúa en FALSE WHILELOOP WHILE condicion LOOP instrucciones; … ENDLOOP END LOOP; Ciclo WHILE
50
Base de Datos I – PL/SQL ACCEPT p_orden PROMPT ‘Orden Inicial:’ DECLARE NUMBER v_cuantas NUMBER(2) := 1; BEGIN WHILELOOP WHILE v_cuantas <= 10 LOOP INSERTINTO INSERT INTO orden (orden, item) VALUES VALUES (p_orden+v_cuantas-1, v_cuantas); v_cuantas := v_cuantas + 1; ENDLOOP END LOOP; END END; Ciclo WHILE
51
Base de Datos I – PL/SQL
54
Ciclos internos para múltiples niveles Se usan etiquetas para distinguir entre bloques y ciclos La salida del bloque interno se produce cuando la cláusula EXIT hace referencia a la etiqueta Ciclos Internos y Etiquetas
55
Base de Datos I – PL/SQL
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.