La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I - 425501 PL/SQL.

Presentaciones similares


Presentación del tema: "Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I - 425501 PL/SQL."— Transcripción de la presentación:

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

6

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

33

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

36

37

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

40

41

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

52

53

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


Descargar ppt "Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I - 425501 PL/SQL."

Presentaciones similares


Anuncios Google