Está en la página 1de 6

Ejercicios

ORACLE PL/SQL -2007

Ejercicios PL/SQL de ORACLE


Nota: Recuerde guardar los scripts, utilice para ello un editor de texto

1. Variables y Entrada y Salida de Datos


1. Construya un bloque PL/SQL que pida al usuario su nombre por teclado y que
posteriormente lo visualice de la siguiente forma El nombre introducido es:
NOMBRE.

Dada la siguiente tabla:


-- tabla para almacenar las personas de la BD
CREATE TABLE Personas
(dni VARCHAR2(9) PRIMARY KEY,
nombre VARCHAR2(15),
edad NUMBER);

Inserte los siguientes datos de prueba el la tabla PERSONAS:


Dni

nombre
11
22
33
44

Juan
Jos
Maria
Elena

apellidos
lvarez
Jimnez
Prez
Martnez

edad
18
22
35
20

2. Construya un bloque PL/SQL, que pida por teclado el dni de la persona y que
posteriormente se muestre el nombre y la edad de la persona correspondiente.
3. Construya un bloque PL/SQL con la misma funcionalidad pero utilizando un
registro para almacenar el nombre y la edad de la persona elegida.

Pgina 1

Ejercicios

ORACLE PL/SQL -2007

2. Variables, Bloques y Estructuras de Control


1. Cree un bloque en el que se pida el nombre y la edad del usuario, se guarde en
variables y posteriormente se muestre por pantalla su contenido.
2. Cree una tabla Tabla_Numeros con un atributo valor de tipo INTEGER. Cree
un bloque que inserte nmeros del 1 al 50. Compruebe los datos insertados en
la tabla Tabla_Numeros.
CREATE TABLE Tabla_Numeros (
valor
INTEGER);

3. Borre el contenido de la tabla Tabla_Numeros utilizando la sentencia


DELETE. Cree un bloque que inserte 8 elementos en la tabla con valores del 1
al 10, excepto el 4 y el 5. Compruebe, de nuevo, los datos que contiene la
tabla Tabla_Numeros.
4. Cree una tabla Tabla_Articulos con los siguientes atributos: cdigo,
nombre, precio e IVA. Introduzca datos de prueba utilizando la sentencia
INSERT.
CREATE TABLE Tabla_Articulos (
codigo
VARCHAR(5) PRIMARY KEY,
nombre
VARCHAR(20),
precio
NUMBER,
IVA
NUMBER);

a) Construya un bloque que compruebe si el precio del artculo cuyo cdigo es


A001 es mayor que 10 euros y en caso afirmativo, imprima el nombre y el
precio del artculo por pantalla.
b) Construya un bloque que seleccione el artculo de mayor precio que est
almacenado en la tabla, almacene su valor en una variable y luego
imprmalo.
c) Construya un bloque que actualice el precio del artculo cuyo cdigo es
A005 segn las siguientes indicaciones:
Si el artculo tiene un precio menor de 1 euro, su precio debe ser
aumentado en 25 cntimos.
Si est comprendido entre 1 euro y 10 euros su precio aumentar un
10 % .Si excede los 10 euros su precio aumentar en un 20 %.
Si el precio es NULL, el aumento es 0.
d) Construya un bloque similar al del apartado 3c donde el usuario introduzca
por pantalla el cdigo del artculo que desee modificar su precio.

Pgina 2

Ejercicios

ORACLE PL/SQL -2007

3.Cursores
1. Dadas las siguientes tablas:
-- tabla para almacenar todos los alumnos de la BD
CREATE TABLE Alumnos
(numMatricula NUMBER PRIMARY KEY,
nombre VARCHAR2(15),
apellidos VARCHAR2(30),
titulacion VARCHAR2(15),
precioMatricula NUMBER);
-- tabla para los alumnos de informtica
CREATE TABLE AlumnosInf
(IDMatricula NUMBER PRIMARY KEY,
nombre_apellidos VARCHAR2(50),
precio NUMBER);

Inserte los siguientes datos de prueba el la tabla ALUMNOS:


numMatricula
1
2
3
4

nombre
Juan
Jos
Maria
Elena

apellidos
lvarez
Jimnez
Prez
Martnez

titulacion
Administrativo
Informatica
Administrativo
Informatica

precioMatricula
1000
1200
1000
1200

Construya un cursor que inserte slo los alumnos de informtica en la tabla


ALUMNOSINF, teniendo en cuenta la estructura de esta tabla, as por ejemplo,
debe tener en cuenta que el atributo nombre_apellidos resulta de la concatenacin
de los atributos nombre y apellidos. Antes de la insercin de cada tupla en la tabla
ALUMNOSINF debe mostrar por pantalla el nombre y el apellido que va a insertar.

Pgina 3

Ejercicios

ORACLE PL/SQL -2007

2. Dadas las siguientes tablas:


CREATE TABLE Tabla_Departamento (
Num_Depart Number(2) PRIMARY KEY,
Nombre_Depart VARCHAR2(15),
Ubicacin VARCHAR2(15),
Presupuesto NUMBER(10,2),
Media_Salarios NUMBER(10,2),
Total_Salarios NUMBER(10,2));
CREATE TABLE Tabla_Empleado(
Num_Empleado Number(4) PRIMARY KEY,
Nombre_Empleado VARCHAR(25),
Categora VARCHAR(10), -- Gerente, Comercial,
Jefe Number(4),
Fecha_Contratacion DATE,
Salario Number(7,2),
Comision Number(7,2),
Num_Depart NUMBER(2),
FOREIGN KEY (Jefe) REFERENCES Tabla_Empleado,
FOREIGN KEY (Num_Depart) REFERENCES Tabla_Departamento);

2.1

Construya un bloque que calcule el presupuesto del departamento para el


ao prximo. Se almacenar el mismo en la tabla Tabla_Departamento
en la columna Presupuesto. Hay que tener en cuenta las siguientes
subidas de sueldo:
Gerente
Comercial

+ 20%
+ 15%

Los dems empleados que no estn en ninguna de las categoras anteriores


se les subir el sueldo un 10%.
2.2

Construya un bloque que actualice el campo Total_Salarios y el campo


Media_Salarios de la tabla Tabla_Departamento, siendo el total la suma
del salario de todos los empleados, igualmente con la media. Para ello:

Cree un cursor C1, que devuelva todos los departamentos

Cree un cursor C2, que devuelva el salario y el cdigo de todos los


empleados de su departamento.

Pgina 4

Ejercicios

ORACLE PL/SQL -2007

2.3

Cree una tabla NOTAS con los atributos que estime necesarios y construya
un bloque que inserte en la tabla NOTAS cuatro filas para cada alumno
matriculado, estas filas correspondern a las tres convocatorias ordinarias y
la ltima para la convocatoria extraordinaria de junio. Antes de insertar se
comprobar que no estn ya creadas. Las filas debern inicializarse a nulo.

2.4

Cree un bloque que almancene en la tabla AUX_ARTICULOS (debe crearse


previamente) un nmero dado de los artculos con mayor precio de los
existentes en la tabla Tabla_Articulos. El nmero de artculos a almacenarse
debe ser dado por teclado.

2.5

Escriba un bloque que recupere todos los provedores por pases. El


resultado debe almacenarse en una nueva tabla Tabla_Aux que permita
almacenar datos del tipo:
Proveedor: ONCE Pas: Espaa
Utilice un cursor para recuperar cada pas de la tabla Tabla_Proveedores y
pasar dicho pas a un cursor que obtenga el nombre de los proveedores en
l. Una vez que se tiene el nombre del proveedor y su pas, debe aadirse a
la nueva tabla en el formato especificado.
NOTA: En primer lugar, debe crear las tablas Tabla_Proveedores y
Tabla_Aux e insertar en las mismas datos de prueba.

Pgina 5

Ejercicios

ORACLE PL/SQL -2007

4. Procedimientos y Funciones Almacenados


1. Defina un procedimiento almacenado Mensaje que escriba un mensaje por
pantalla. Cree posteriormente un bloque PL/SQL desde el que invoque dicho
procedimiento.
2. Defina un procedimiento almacenado Mostrar que reciba como parmetro de
entrada un cadena de caracteres y que muestre dicha cadena. Cree
posteriormente un bloque PL/SQL desde el que invoque dicho procedimiento
pasndole una cadena que el usuario haya introducido por teclado.
3. Defina un procedimiento para que inserte en la tabla Departamento
(previamente creada) una fila con los tres valores que se le pasan por parmetro:
cdigo, nombre y localidad. Si el departamento que se le pasa por parmetro ya
existe, se debe insertar en la tabla temporal (que tambin debe crear
previamente). Cree posteriormente un bloque PL/SQL desde el que invoque dicho
procedimiento pasndole los parmetros que desee insertar en la tabla.
4. Defina una funcin a la que le pasamos una convocatoria y nos devuelve el
nombre de la asignatura con ms suspensos. Para ello debe crear previamente una
tabla Asignatura con los atributos: cdigo y nombre y otra tabla Notas, que
contiene el cdigo de la asignatura, la convocatoria, el alumno y su nota. Cree
posteriormente un bloque PL/SQL que visualice el nombre de la asignatura con
ms suspensos.
5. Defina una funcin que devuelva el factorial de un nmero que se le pasa a la
funcin por parmetro. Cree posteriormente un bloque PL/SQL que visualice el
resultado del factorial del nmero introducido por teclado.

Pgina 6

También podría gustarte