estoy en problemas

tema enviado por Moka en ORACLE
tema iniciado el 01/12/2009
por favor necesito de su ayuda soy muy mala programando y necesito entregar estos ejercicios. Espero que alguien me ayude. - Ejercicios 1. Implementar un procedimiento en PL/SQL que reciba el dni como parámetro de entrada y devuelva nombre y edad como parámetros de salida y posteriormente construya un bloque PL/SQL, lo visualice de la siguiente forma “El dni 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 apellidos edad 11 Juan Álvarez 18 22 José Jiménez 22 33 Maria Pérez 35 44 Elena Martínez 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. 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 números 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: código, 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 artículo cuyo código es ‘A001’ es mayor que 10 euros y en caso afirmativo, imprima el nombre y el precio del artículo por pantalla. b) Construya un bloque que seleccione el artículo de mayor precio que esté almacenado en la tabla, almacene su valor en una variable y luego imprímalo. c) Construya un bloque que actualice el precio del artículo cuyo código es ‘A005’ según las siguientes indicaciones: - Si el artículo tiene un precio menor de 1 euro, su precio debe ser aumentado en 25 centésimos. - 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 código del artículo que desee modificar su precio. 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 informática CREATE TABLE AlumnosInf (IDMatricula NUMBER PRIMARY KEY, nombre_apellidos VARCHAR2(50), precio NUMBER); Inserte los siguientes datos de prueba el la tabla ALUMNOS: numMatricula nombre apellidos titulacion precioMatricula 1 Juan Álvarez Administrativo 1000 2 José Jiménez Informatica 1200 3 Maria Pérez Administrativo 1000 4 Elena Martínez Informatica 1200 Construya un cursor que inserte sólo los alumnos de informática 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 concatenación de los atributos nombre y apellidos. Antes de la inserción de cada tupla en la tabla ALUMNOSINF debe mostrar por pantalla el nombre y el apellido que va a insertar. 2. Dadas las siguientes tablas: CREATE TABLE Tabla_Departamento ( Num_Depart Number(2) PRIMARY KEY, Nombre_Depart VARCHAR2(15), Ubicación 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), Categoría 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 año próximo. Se almacenará el mismo en la tabla Tabla_Departamento en la columna Presupuesto. Hay que tener en cuenta las siguientes subidas de sueldo: Gerente + 20% Comercial + 15% Los demás empleados que no estén en ninguna de las categorías 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 código de todos los empleados de su departamento. 4. Procedimientos y Funciones Almacenados 1. Defina un procedimiento con 1 parámetro de entrada y uno de salida. Cree posteriormente un bloque PL/SQL desde el que invoque dicho procedimiento. 2. Defina un procedimiento que actualice registros de una tabla, con 3 parámetros de entrada, el primero será el id del registro a actualizar y los otros dos serán los nuevos valores a sustituir. Cree posteriormente un bloque PL/SQL desde el que invoque dicho procedimiento. 3. Defina un procedimiento para que inserte en la tabla Departamento (previamente creada) una fila con los tres valores que se le pasan por parámetro: código, nombre y localidad. Si el departamento que se le pasa por parámetro ya existe, se debe insertar en la tabla temporal (que también debe crear previamente). Cree posteriormente un bloque PL/SQL desde el que invoque dicho procedimiento pasándole los parámetros que desee insertar en la tabla. 4. Defina un procedimiento con 1 parámetro de IN/OUT es decir de entrada y salida. Cree posteriormente un bloque PL/SQL desde el que invoque dicho procedimiento. 5. Defina una función que devuelva el factorial de un número que se le pasa a la función por parámetro. Cree posteriormente un bloque PL/SQL que visualice el resultado del factorial del número introducido por teclado.