Ejercicios PL/SQL 2
Ejercicio 1
Crea una tabla llamada SELLER que contenga los campos:
- ID INTEGER PRIMARY KEY
- NAME VARCHAR2(40)
- 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;
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
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:
- ID INTEGER PRIMARY KEY
- NAME VARCHAR2(40)
- ADDRESS VARCHAR2(100)
- ZIPCODE CHAR(5) DEFAULT '28001'
- 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