Vous êtes sur la page 1sur 5

Drop Procedure nombre;

procedemientos
create procedure sp_ejemplo1 is
codigo employees.employee_id%type:=101; nombre employees.first_name%type;
salario employees.salary%type;
Begin
select first_name, salary into nombre, salario
from employees
where employee_id=codigo;
htp.print('Nombre : '|| nombre);
htp.print('Salario : '|| salario);
end;
Begin Ejecutar el Procedimiento
sp_ejemplo1;
End
***********+
Create or replace procedure sp_ejemplo2 (codigo number) is
nombre employee.first_name%type;
Begin
select first_name into nombre
from employees
where employee_id=codigo;
htp.print('El nombre es : '|| nombre);
end;
Begin Ejecutar el Procedimiento
sp_ejemplo2(200);
End;
**************
CREATE OR REPLACE PROCEDURE sp_ejemplo3 (puesto varchar) IS
nombre employees.first_name%type;
salario employees.salary%type;
CURSOR cur_empleado IS
select first_name, salary from employees
where job_id=puesto;
BEGIN
OPEN cur_empleado;
LOOP
FETCH cur_empleado INTO nombre, salario;
IF (cur_empleado%FOUND) THEN
htp.print('Nombre del Empleado: ' || nombre );
htp.print( Con Salario: ' || salario);
END IF;
EXIT WHEN cur_empleado%NOTFOUND;
END LOOP;
CLOSE cur_empleado;
END;
***********
Construir un procedimiento llamado sp_empleados donde se ingrese
el nombre del departamento y luego presentar un listado de que empleados estn
relacionados con dicho departamento, mostrando el nombre, puesto y fecha de con
tratacin.
CREATE OR REPLACE PROCEDURE sp_ejemplo4 (puesto varchar) IS
nombre employees.first_name%type;
salario employees.salary%type;
no_puesto exception;
CURSOR cur_empleado IS
SELECT first_name, salary FROM employees

WHERE job_id=puesto;
BEGIN
OPEN cur_empleado;
LOOP
FETCH cur_empleado INTO nombre, salario;
EXIT WHEN cur_empleado%NOTFOUND;
htp.print('Nombre del Empleado: ' || nombre || ' con Salario: ' || salario);
END LOOP;
IF cur_empleado%rowcount=0 THEN
raise no_puesto;
END IF;
CLOSE cur_empleado;
EXCEPTION
WHEN no_puesto THEN
htp.print('Puesto no Encontrado ');
END;
funciones************
CREATE FUNCTION f_ejemplo1 (salario number)
RETURN boolean IS
BEGIN
--validar salario mayor a 1000
if (salario>1000) then
return (true);
else
return (false);
end if;
END;
**********
invocando a la funcion desde un procedimiento
CREATE or replace PROCEDURE sp_sueldo (codigo number) IS
sueldo employees.salary%type;
begin
select salary into sueldo
from employees
where employee_id=codigo;
IF f_ejemplo1(sueldo) THEN
htp.print('Salario mas 10% '||sueldo*1.10);
ELSE
htp.print('Salario mas 20 % '||sueldo*1.20 );
END IF;
end;
Crear una funcin con el nombre f_promedio y que devuelva verdadero si el salario
es
mayor al promedio, caso contrario devolver falso.
Luego, crear un procedimiento llamado sp_promedio, donde se ingrese el cdigo de un
empleado y muestre el mensaje salario mayor al promedio ,
caso contrario salario por debajo al promedio . Este procedimiento debe invocar a
la funcin.
CREATE FUNCTION f_promedio (salario number)
RETURN boolean IS
prom employees.salary%type;
BEGIN
select avg(salary) into prom
from employees;

IF (salario>prom) THEN
return (true);
ELSE
return (false);
END IF;
END;
*****************invocando a la funcion desde un procedimiento********
CREATE or replace PROCEDURE sp_promedio(codigo number) IS
sueldo employees.salary%type;
BEGIN
select salary into sueldo
from employees
where employee_id=codigo;
if f_promedio(sueldo) then
htp.print('Salario Mayor al Promedio');
else
htp.print('Salario Menor al Promedio');
end if;
END;
trigger*************************
pregunta 1 de 11.
create table tab_sal
(
fecha date,
proceso varchar2(50)
)
i
CREATE
BEFORE
Begin
INSERT
VALUES
End;

or replace TRIGGER dis_uno


INSERT ON departments
INTO tab_sal
(sysdate,'Insertado por trigger ');

insert into tab_sal values('11/10/2014','insertado');


select * from tab_sal
select * from departments
pregunta 2 de la 11************************
create table tab_menorr
(
secuencia number not null primary key,
menor number,
situacion varchar(30)
)
create or replace trigger dis_dos1
after insert or update ON employees
Declare
num number;

menor number;
begin
SELECT nvl(min(secuencia),0)-1 into num
from tab_menorr;
select min(salary)into menor
from employees;
insert into tab_menorr
values (num,menor,'insertado por el triger');
end;

drop trigger
insert into tab_menorr values('111','2000','insertado por el trigger');
update employees
set salary=salary-10
where employee_id=132;
Select * from tab_menorr
Select * from employees
order by salary
Select * from employees
where employee_id='111'

pregunta 3 de la 11
create sequence seq_cor
start with 100
increment by 2
create table tab_sta
(
orden number not null primary key,
fecha date,
proceso varchar(50)
)
CREATE or replace TRIGGER dis_pre
after UPDATE or INSERT or DELETE on employees
DECLARE
mensaje varchar2(50);
BEGIN
IF UPDATING THEN
mensaje := 'Fila actualizada en tabla Empleado';
ELSIF INSERTING THEN
mensaje := 'Fila Insertada en tabla Empleado ';
ELSE
mensaje:= 'Fila Eliminada en tabla Empleado ';
END IF;
-- Proceso de Insercin

INSERT into tab_sta


VALUES (seq_cor.nextval, SYSDATE, MENSAJE);
END;
Drop trigger dis_dos;
update employees
set salary=salary-20
where employee_id=132;
select * from tab_sta

pregunta 4 de la 11
create sequence sec_agregar
start with 500
increment by 2
create table n_puesto
(
orden number,
usuario varchar2(50),
operacion varchar2(50)
)
CREATE or replace TRIGGER d_agregar
after UPDATE or INSERT or DELETE on employees
DECLARE
usuario varchar2(50);
operacion varchar2(50);
BEGIN
IF UPDATING THEN
usuario := 'select username form user_users';
operacion := 'Fila actualizada en tabla Empleado';
ELSIF INSERTING THEN
usuario := 'select username form user_users';
operacion := 'Fila insertado en tabla Empleado';
ELSE
usuario := 'select username form user_users';
operacion := 'Fila eliminado en tabla Empleado';
END IF;
-- Proceso de Insercin
INSERT into n_puestos
VALUES (sec_agregar.nextval, usuario, operacion);
END;

Vous aimerez peut-être aussi