Buscar este blog

martes, 26 de noviembre de 2013

Ejercicios PL/SQL 2

Ejercicios PL/SQL 2

Ejercicio 1

Crea una tabla llamada SELLER que contenga los campos:
  1. ID INTEGER PRIMARY KEY
  2. NAME VARCHAR2(40)
  3. PERCENTAGE NUMBER(2) DEFAULT 7
Debes crear un trigger para que al modificar el campo percentage no permita introducir un valor mayor que 40.
-------------------------------------------------------------------------------------------------------
--Crea una tabla llamada SELLER que contenga los campos:
--Debes crear un trigger para que al modificar el campo percentage no permita introducir un valor mayor que 40.
create table seller (

ID_Seller INTEGER PRIMARY KEY,
nombre VARCHAR2(40),
PERCENTAGE NUMBER(2) DEFAULT 7
);

--drop trigger comision_maxima;
CREATE TRIGGER comision_maxima
    AFTER INSERT OR UPDATE ON seller
    REFERENCING NEW AS newRow
    FOR EACH ROW
    WHEN (newRow.percentage >= 40)
    BEGIN
        INSERT INTO seller VALUES(:newRow.ID_Seller, :newRow.nombre, :newrow.percentage);

END comision_maxima;
-------------------------------------------------------------------------------------------------------

Ejercicio 2

Crea una función PL/SQL que dados los números del DNI te devuelva un CHAR que contenga la letra correspondiente. El cálculo de la letra del DNI lo puedes sacar de internet, para cualquier lenguaje de programación.

-------------------------------------------------------------------------------------------------------
FALLA Y NO SE POR QUE EN EL ARRAY

create or replace 
function Letra_DNI (DNI integer)
RETURN varchar2
IS
 letra varchar2(1);
 Type Letra_ARRAY IS varray(40) OF VARCHAR2(2);
 LETRAS Letra_array:= Letra_ARRAY('T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E','T');

BEGIN
  letra:=LETRAS(round((DNI/23),2));
  return letra;
END Letra_DNI;
-------------------------------------------------------------------------------------------------------

Ejercicio 3

Sobre una tabla CUSTOMER que tengas, añade un campo DNI con un valor por defecto. Debes crear un TRIGGER que a la hora de insertar o modificar un cliente meta de forma automática la letra utilizando la función anterior. A la hora de dar la orden de INSERT o UPDATE el dni tendrá que ir sin letra, obviamente.

-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------

Ejercicio 4

Crea una tabla COMPANY que contenta los campos:
  1. ID INTEGER PRIMARY KEY
  2. NAME VARCHAR2(40)
  3. ADDRESS VARCHAR2(100)
  4. ZIPCODE  CHAR(5) DEFAULT '28001'
  5. PROVINCE VARCHAR2(20) DEFAULT 'Madrid'
Crea un trigger para que los códigos postales que se inserten o modifiquen solamente puedan estar entre 01000 y 52999. Si se inserta uno no válido debe quedarse el valor anterior.
Además el trigger debe ser capaz de establecer la provincia de forma automática. No hace falta cubrir los 52 casos, basta por ejemplo que lo hagas con las provincias vascas: Guipuzcoa, Vizcaia, Cantabria, La Rioja y Alava.
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------

No hay comentarios:

Publicar un comentario