Tutor I A Ramirez
Tutor I A Ramirez
PROCEDIMIENTOS ALMACENADOS
1.
a)
create or replace procedure add_job (v_job_id in jobs.job_id%type,
v_job_title in jobs.job_title%type)
is
begin
end;
b)
begin
add_job('it_dba', 'database administrator');
end;
begin
add_job('st_man', 'stock manager');
end;
2.
A)
B)
declare
v_job_id jobs.job_id%type := 'it_web';
v_job_title jobs.job_title%type := 'master web';
begin
upd_job(v_job_id, v_job_title);
end;
3.
A)
create or replace procedure del_job(v_job_id in jobs.job_id%type)
is
elim exception;
var_cr number(2);
begin
select count(*) into var_cr from jobs where job_id=v_job_id;
if(var_cr=0) then
raise elim;
else
delete from jobs where job_id=v_job_id;
end if;
exception
when elim then
raise_application_error(-20000 ,'no se pudo eliminar el trabajo');
end;
B)
declare
v_job_id jobs.job_id%type := 'it_dba';
begin
del_job(v_job_id);
end;
c)
declare
v_job_id jobs.job_id%type := 'it_web';
begin
del_job(v_job_id);
end;
4.
a)
declare
v_emp_id employees.employee_id%type :=198;
begin
get_employee(v_emp_id);
end;
B)
create or replace procedure get_employee(v_emp_id in
employees.employee_id%type,
v_salario out employees.salary%type, v_job_id out
employees.job_id%type)
is
begin
select salary, job_id into v_salario, v_job_id from employees where
employee_id=v_emp_id;
end;
declare
v_emp_id employees.employee_id%type :=120;
v_salario employees.salary%type;
v_job_id employees.job_id%type;
begin
get_employee(v_emp_id, v_salario, v_job_id);
dbms_output.put_line('salario: '||v_salario);
dbms_output.put_line('identifador trabajo: '||v_job_id);
end;
C)
declare
v_emp_id employees.employee_id%type :=300;
v_salario employees.salary%type;
v_job_id employees.job_id%type;
begin
get_employee(v_emp_id, v_salario, v_job_id);
dbms_output.put_line('salario: '||v_salario);
dbms_output.put_line('identifador trabajo: '||v_job_id);
end;
Funciones
1.
a)
create or replace function get_job(v_job_id in jobs.job_id%type)
return varchar2
is
v_title jobs.job_title%type;
begin
select job_title into v_title from jobs where v_job_id=job_id;
return v_title;
end;
b)
declare
b_title varchar2(35);
begin
b_title:=get_job('sa_rep');
dbms_output.put_line('cargo: '||b_title);
end;
2.
a)
create or replace function get_annual_comp(v_salary in
employees.salary%type, v_commission in employees.commission_pct%type)
return number
is
begin
return
(nvl(v_salary,0)*12)+(nvl(v_commission,0)*nvl(v_salary,0)*12);
end;
b)
select employee_id, last_name, get_annual_comp(salary,commission_pct)
as comision_anual
from employees
where department_id=30;
3.
a)
create or replace function valid_deptid(v_dep_id in
departments.department_id%type)
return boolean
is
v_validate integer;
begin
select 1
into v_validate
from departments
where department_id = v_dep_id;
return true;
exception
when no_data_found then
return false;
end;