DIRECCIN ACADMICA CARRERA PROFESIONALES CURSO : Base de datos Avanzado 2 SEMESTRE : 2015-31 CICLO : Quinto
PROGRAMACION PL/SQL:
Al trmino 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 volmenes de nformacin y gestiona los posibles errores de ejecucin con el uso de excepciones.
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES 1. Pintado de mensajes en la consola de sql plus --Bloque que muestra/Pinta el mensaje Hola Mundo --IMPORTANTE: Toda sentencia a exepcion del begin lleva el caracter punto y coma (;) begin dbms_output.put_line ('Hola Mundo'); end; / --Bloque que muestra un 2do mensaje begin dbms_output.put_line ('BIENVENIDOS AL CURSO DE ORACLE: Unidad 4 Programacion PL/SQL'); end; / 2.Dada el siguiente modelo, en un bloque asignar valores a los campos y mostrarlos por consola Bloque PL/SQL en sql plus
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES SQL> DECLARE 2 ID_DOCENTE NUMBER; 3 NOMBRES VARCHAR2(50); 4 APELLIDOS VARCHAR2(50); 5 FECHA_NACIMIENTO DATE; 6 SALARIO NUMBER(8,2); 7 ANTIGUEDAD INTEGER; 8 BEGIN 9 ID_DOCENTE:=1; 10 dbms_output.put_line ('El Id del Docente es :'|| ID_DOCENTE); 11 NOMBRES:= 'RICHARD LEONARDO'; 12 dbms_output.put_line ('El Nombre del Docente es :'|| NOMBRES); 13 APELLIDOS:= 'BERROCAL NAVARRO'; 14 dbms_output.put_line ('El Apellido del Docente es :'|| APELLIDOS); 15 FECHA_NACIMIENTO:= '18-JUN-1996'; 16 dbms_output.put_line ('La fecha de nacimiento del Docente es :'|| FECHA_NACIMIENTO); 17 SALARIO:=1200.00; 18 dbms_output.put_line ('El Salario del Docente es :'|| SALARIO); 19 ANTIGUEDAD:=20; 20 dbms_output.put_line ('El Antigedad del Docente es :'|| ANTIGUEDAD); 21 end; 22 / El Id del Docente es :1 El Nombre del Docente es : RICHARD LEONARDO El Apellido del Docente es :BERROCAL NAVARRO La fecha de nacimiento del Docente es :18/06/96 El Salario del Docente es :1200 El Antigedad del Docente es :20 Procedimiento PL/SQL terminado correctamente.
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES 3. Calcular el rea de un circulo de radio 3
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES SQL> declare 2 pi constant number(9,7) := 3.1415927; 3 radio integer(5); 4 area number(14,2); 5 begin 6 radio := 3; 7 area := pi*power(radio, 2); 8 Dbms_output.put_line ('El area del circulo de radio '||radio||' es: '||area); 9 end; 10 / El area del circulo de radio 3 es: 28,27
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES 4. Calcular el rea de un circulo de radio 3 e insertarlo en la tabla reas de campos radio y circulo
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES SQL> create table areas( 2 radio integer, 3 area number(14,2) 4 ); Tabla creada. SQL> declare 2 pi constant number(9,7) := 3.1415927; 3 radio integer(5); 4 area number(14,2); 5 begin 6 radio := 3; 7 area := pi*power(radio, 2); 8 Dbms_output.put_line ('El area del circulo de radio '||radio||' es: '||area); 9 insert into areas values (radio, area); 10 Dbms_output.put_line ('Insertado en tabla areas'); 11 end; 12 / El area del circulo de radio 3 es: 28,27 Insertado en tabla areas Procedimiento PL/SQL terminado correctamente.
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES Ejercicio propuesto: Dado un cuadrado calcular el rea, diagonal y permetro, los cuales deben ser almacenados en una tabla 5. Calcular el volumen de un cubo
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES SQL> declare 2 volumen number(10,4); 3 pi constant number(9,7) := 3.1415927; 4 radio integer(5); 5 h integer(5); 6 begin 7 radio := 5; 8 h:=2; 9 volumen:=(1/3)*pi*power(radio, 2)*h; 10 Dbms_output.put_line ('El volumen del cono con radio '||radio||' y con altura de '||h||' es: '|| volumen); 11 end; 12 / El volumen del cono con radio 5 y con altura de 2 es: 52,3599
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES 6. Calcular el volumen de un cubo e insertar en un tabla cono el radio, la altura y el volumen Previamente se tiene que crear la tabla
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES SQL> create table cono( 2 radio integer, 3 h integer, 4 volumen number(14,2)); Tabla creada.
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES SQL> declare 2 volumen number(10,4); 3 pi constant number(9,7) := 3.1415927; 4 radio integer(5); 5 h integer(5); 6 begin 7 radio := 5; 8 h:=2; 9 volumen:=(1/3)*pi*power(radio, 2)*h; 10 Dbms_output.put_line ('El volumen del cono con radio '||radio||' y con altura de '||h||' es: '|| volumen); 11 insert into cono values (radio,h, volumen); 12 Dbms_output.put_line ('Insertado en tabla cono'); 13 end; 14 / El volumen del cono con radio 5 y con altura de 2 es: 52,3599 Insertado en tabla cono
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES Ahora verificamos consultando la tabla en mencin SQL> select * from cono; RADIO H VOLUMEN ---------- ---------- ---------5 2 52,3599 Ejercicio Propuesto: Calcular el rea lateral y el rea total en un solo programa. Modificar la tabla cono y agregar los campos arealateral y areatotal, los datos asociados deben de guardarse en esta tabla. 7. Crear un bloque para solicitar el DNI al usuario SQL> DECLARE 2 v_DNI VARCHAR2(50); 3 BEGIN 4 v_DNI := '&Ingrese DNI'; 5 END ; 6 / Introduzca un valor para ingrese: 71535834 antiguo 4: v_DNI := '&Ingrese DNI'; nuevo 4: v_DNI := '71535834 DNI'; Procedimiento PL/SQL terminado correctamente. Ejercicio Propuesto: Para los ejercicios previo de circulo, cuadrado y cubo, los datos deben ser solicitados por el usuario, los clculos asociado deben de realizarse con normalidad. 8. Manejo de excepciones select to_date('09/05/2015', 'mmddyyyy') from dual --sentencia es incorrecta SELECT TO_DATE('23/10/2012','DD/MM/YYYY') FROM DUAL; --sentencia es correcta Dada la sentencia que es incorrecta, se creara un bloque para manejar la excepcin. SQL> DECLARE 2 Fecha DATE; 3 BEGIN 4 SELECT TO_DATE('19/06/2012', 'mmddyyyy') 5 INTO Fecha 6 FROM DUAL; 7 EXCEPTION 8 WHEN OTHERS THEN 9 Dbms_output.put_line ('Error en la sentencia'); 10 END; 11 / Ing CIP Richard Leonardo Berrocal Navarro Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES Error en la sentencia Ahora se har el bloque con la consulta de fecha correcta SQL> DECLARE 2 Fecha DATE; 3 BEGIN 4 SELECT TO_DATE('19/06/2012', 'DD/MM/YYYY') 5 INTO Fecha 6 FROM DUAL; 7 Dbms_output.put_line ('Fecha :'|| Fecha); 8 EXCEPTION 9 WHEN OTHERS THEN 10 Dbms_output.put_line ('Error en la sentencia'); 11 END; 12 / Fecha :19/06/12 Realizar la divisin de 2 nmeros, controlar en una excepcin la divisin por cero SQL> declare 2 num number; 3 dem number; 4 res number; 5 begin 6 num:=6; 7 dem:=0; 8 res:=num/dem; 9 Dbms_output.put_line ('La division entre '||num||' y '||dem|| 'es : '|| res); 10 EXCEPTION 11 WHEN OTHERS THEN 12 Dbms_output.put_line ('La division por cero no existe'); 13 END; 14 / La division por cero no existe Procedimiento PL/SQL terminado correctamente. Ejercicio propuesto: Para los ejercicios del crculo, cuadrado y cubo controlar las excepciones cuando el insert esta mal elaborado (sentencia incorrecta, las columnas no parean etc). Ejercicio Propuesto Integral:
Ing CIP Richard Leonardo Berrocal Navarro
Elaborado solo con fines acadmicos
INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC
DIRECCIN ACADMICA CARRERA PROFESIONALES Calcular el rea y volumen de una esfera, el cual ser almacenado en una tabla (radio, volumen rea) el dato del radio debe ser solicitado al usuario, controlar excepciones, cuando el radio no sea del tipo de dato correcto, cuando los insert no sean correctos,