trabajo2

20
EJERCICIOS DE GESTION DE DASE DE DATOS INDICE Contenido Págs. Índice……………….………………………………………….……1 Desarrollo EJERCICIOS PL/SQL 1. Variables y Entrada y Salida de Datos…………………..…..2 2. Variables, Bloques y Estructura de Control…...……….. …...4 3. Cursores…………………………………………………………7 4. Procedimientos….…………………………………………..…13 Comentario.…..………………………………….………………. 15 Cesar Crespo 1 UNAQ

Upload: cesar-crespo

Post on 25-Nov-2014

181 views

Category:

Documents


3 download

TRANSCRIPT

EJERCICIOS DE GESTION DE DASE DE DATOS

INDICEContenido Pgs.

ndice..1 Desarrollo EJERCICIOS PL/SQL 1. Variables y Entrada y Salida de Datos....2 2. Variables, Bloques y Estructura de Control........4 3. Cursores7 4. Procedimientos...13 Comentario..... 15

Cesar Crespo

1

UNAQ

EJERCICIOS DE GESTION DE DASE DE DATOS1. VARIABLES Y ENTRADA Y SALIDA DE DATOS1.- 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. DECLARE V_NOMBRE VARCHAR2(50); BEGIN V_NOMBRE:='&a'; DBMS_OUTPUT.PUT_LINE('EL NOMBRE INTRODUCIDO ES: '|| V_NOMBRE); END;

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 en la tabla PERSONAS: Dni nombre apellidos edad 11 Juan lvarez 18 22 Jos Jimnez 22 33 Maria Prez 35 44 Elena Martnez 20 select * from personas; insert into personas (dni,nombre,edad) values('11','Juan lvarez',18); insert into personas(dni,nombre,edad) values('22','Jos Jimnez',22); insert into personas(dni,nombre,edad) values('33','Maria Prez',35); insert into personas(dni,nombre,edad) values('44','Elena Martnez',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. DECLARE V_DNI PERSONAS.DNI%TYPE; V_NOMBRE PERSONAS.NOMBRE%TYPE; V_EDAD PERSONAS.EDAD%TYPE; BEGIN V_DNI:=&a; SELECT NOMBRE,EDAD INTO V_NOMBRE,V_EDAD

Cesar Crespo

2

UNAQ

EJERCICIOS DE GESTION DE DASE DE DATOSFROM PERSONAS WHERE DNI=V_DNI; DBMS_OUTPUT.PUT_LINE('DNI: '|| V_DNI); DBMS_OUTPUT.PUT_LINE('NOMBRE: '|| V_NOMBRE); DBMS_OUTPUT.PUT_LINE('EDAD: '|| V_EDAD); EXCEPTION WHEN no_data_found then DBMS_OUTPUT.PUT_LINE('NO EXISTEN REGISTROS'); WHEN TOO_MANY_ROWS then DBMS_OUTPUT.PUT_LINE('LA CONSULTA RETORNA MAS DE UN REGISTRO'); WHEN OTHERS then DBMS_OUTPUT.PUT_LINE('SE DIO EL ERROR :'||SQLERRM); END;

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. DECLARE v_persona Personas%rowtype; v_cont varchar2(10); BEGIN DBMS_OUTPUT.PUT_LINE('Ingrese codigo DNI : '); v_cont:='&b'; SELECT NOMBRE,EDAD INTO v_persona.nombre,v_persona.edad FROM PERSONAS WHERE DNI=v_cont; DBMS_OUTPUT.PUT_LINE('NOMBRE: '||v_persona.nombre); DBMS_OUTPUT.PUT_LINE('EDAD: '||v_persona.edad); END;

Cesar Crespo

3

UNAQ

EJERCICIOS DE GESTION DE DASE DE DATOS

2. VARIABLES, BLOQUES Y ESTRUCTURAS DE CONTROL1. 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. DECLARE v_nombre varchar2(100); v_edad number; BEGIN dbms_output.put_line('Ingrese Nombre: '); v_nombre:='&Nombre'; dbms_output.put_line('Ingrese Edad: '); v_edad:='&Edad'; dbms_output.put_line(''); dbms_output.put_line('DATOS ENCOTRADOS: '); dbms_output.put_line('NOMBRE : '||v_nombre); dbms_output.put_line('EDAD : '||v_edad); END;

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); declare v_cont number(4); begin v_cont:=1; while v_cont =V_valor; END; INSERTO ELEMENTOS DECLARE BEGIN For X in 1..10 Loop If X not in(4,5)then Insert into Tabla_Numeros(Valor) Values(X); End if; End Loop; END; 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(9,2), IVA NUMBER(9,2)); insert into Tabla_Articulos values('A001','TV 21',20,1); insert into Tabla_Articulos values('A002','RADIO',12,1); insert into Tabla_Articulos values('A003','COCINA',35,2); insert into Tabla_Articulos values('A004','REFRIGERADOR',2000,5); insert into Tabla_Articulos values('A005','SARTEN',5,0); 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. DECLARE V_codigo varchar2(10); v_nombre varchar2(20); v_precio number; BEGIN v_codigo:='&a'; Select nombre,precio into v_nombre, v_precio from Tabla_Articulos where precio > 10 AND CODIGO =UPPER(v_codigo); dbms_output.put_line('EL ARTICULO ES : '||v_NOMBRE||', Y SU PRECIO ES $: '||v_PRECIO); END; 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. DECLARE v_nombre varchar2(20); v_precio number; BEGIN

Cesar Crespo

5

UNAQ

EJERCICIOS DE GESTION DE DASE DE DATOSSelect nombre,precio into v_nombre, v_precio from Tabla_Articulos where precio = (Select MAX(precio) From Tabla_Articulos); dbms_output.put_line('EL PRECIO MAS ALTO : $'||v_precio); dbms_output.put_line('ARTICULO : '||v_nombre); END; 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. DECLARE v_codigo varchar2(10); v_nombre varchar2(20); v_precio number; mi_error exception; BEGIN v_codigo :='&a'; Select nombre,precio into v_nombre, v_precio from Tabla_Articulos where codigo =upper( v_codigo); dbms_output.put_line('ARTICULO: '||v_nombre); dbms_output.put_line('PRECIO: '||v_precio); If v_precio