Está en la página 1de 16

INSTITUTO SUPERIOR TECNOLGICO PRIVADO CIBERTEC

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,

Ing CIP Richard Leonardo Berrocal Navarro


Elaborado solo con fines acadmicos

También podría gustarte