5. Modifique la tabla empleados añadiendo el campo salario (integer). Añadirle un valor por defecto
Publicado por bertag (1 intervención) el 07/09/2017 02:30:33
hola buenas noches..\
estoy en un proyecto
y tengo esta sentencia////
------------
------
-------
--------
-----MODIFICANDO TABLA EMPLEADO--
(QUISIERA REALIZAR LO SIGUIENTE:
5. Modifique la tabla empleados añadiendo el campo salario (integer). Añadirle un valor por defecto para dicho campo.
ALTER TABLE EMPLEADOS ADD salario INTEGER DEFAULT 1000;
6. Crear un TRIGGER para impedir que se aumente el salario de un empleado en más de un 20%. Es necesario comparar los valores :old.salario y :new.salario cuando se modifica (BEFORE UPDATE).
O sea; IF :NEW.salario > :OLD.salario*1.20 THEN raise…
El mensaje de error debe ser: el aumento máximo es de un 20%...
estoy en un proyecto
y tengo esta sentencia////
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Set SERVEROUTPUT ON;
declare
cursor c_manager is select * from emp where job= 'MANAGER';
cursor c_president is select * from emp where job= 'PRESIDENT';
cursor c_Analyst is select * from emp where job= 'ANALYST';
cursor c_salesman is select * from emp where job= 'SALESMAN';
begin
DBMS_OUTPUT.PUT_LINE('--MANAGER--');
for varcont in c_manager loop
DBMS_OUTPUT.PUT_LINE(varcont.ename);
end loop;
DBMS_OUTPUT.PUT_LINE('--PRESIDENT--');
for varcontpre in c_president loop
DBMS_OUTPUT.PUT_LINE(varcontpre.ename);
end loop;
DBMS_OUTPUT.PUT_LINE('--ANALYST--');
for varcontpre in c_analyst loop
DBMS_OUTPUT.PUT_LINE(varcontpre.ename);
end loop;
DBMS_OUTPUT.PUT_LINE('--SALESMAN--');
for varcontpre in c_salesman loop
DBMS_OUTPUT.PUT_LINE(varcontpre.ename);
end loop;
end;
------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE OR REPLACE TRIGGER TR_VALIDAR_JEFES
BEFORE
INSERT ON EMPLEADOS
FOR EACH ROW
DECLARE
NumEmpSupervisados INTEGER;
BEGIN
SELECT count (*) INTO NumEmpSupervisados
FROM EMPLEADOS
WHERE cojefe = :new.cojefe;
IF NumEmpSupervisados > 4 THEN
raise_application_error (-20600, :new.cojefe || 'NO SE PUEDE SUPERVISAR MAS DE 5');
END IF;
END;
------
1
2
3
4
5
6
7
8
create TABLE EMPLEADOS
(
dni char(4),
nomemp varchar2(15),
COJEFE char(4),
PRIMARY KEY (dni)
);
-------
1
2
3
4
5
6
7
8
INSERT INTO EMPLEADOS (DNI,NOMEMP,COJEFE)
VALUES ('D1','Director',null);
INSERT INTO empleados VALUES ('D2','D.Comercial','D1');
INSERT INTO empleados VALUES ('D3','D.Producción','D1');
INSERT INTO empleados VALUES ('D4','Jefe Ventas','D1');
INSERT INTO empleados VALUES ('D5','Jefe Marketing','D1');
INSERT INTO empleados VALUES ('D6','Vendedor 2','D1');
INSERT INTO empleados VALUES ('D7','Vendedor 3','D1');
--------
1
SELECT cojefe, count(*) FROM empleados GROUP BY cojefe;
-----MODIFICANDO TABLA EMPLEADO--
(QUISIERA REALIZAR LO SIGUIENTE:
5. Modifique la tabla empleados añadiendo el campo salario (integer). Añadirle un valor por defecto para dicho campo.
ALTER TABLE EMPLEADOS ADD salario INTEGER DEFAULT 1000;
6. Crear un TRIGGER para impedir que se aumente el salario de un empleado en más de un 20%. Es necesario comparar los valores :old.salario y :new.salario cuando se modifica (BEFORE UPDATE).
O sea; IF :NEW.salario > :OLD.salario*1.20 THEN raise…
El mensaje de error debe ser: el aumento máximo es de un 20%...
Valora esta pregunta


0