Package:
create or replace package manage_emps
is
tax_rate constant number(5,2) := .28;
v_id number;
procedure insert_emp(p_deptno number,p_sal number);
procedure delete_emp;
procedure update_emp;
function calc_tax(p_sal number) return number;
end;
Package body:
create or replace package body manage_emps
is
procedure update_sal(p_raise_amt number)
is
begin
update emp
set sal = (sal * p_raise_amt) + sal;
where empno = v_id;
end;
procedure insert_emp(p_deptno number,p_sal number)
is
begin
insert into emp(empno,deptno,sal)
values(v_id,p_deptno,p_sal);
end;
procedure delete_emp
is
begin
delete from emp
where empno = v_id;
end;
procedure update_emp
is
begin
v_sal number(10,2);
v_raise number(10,2);
select sal into v_sal
from emp
where empno = v_id;
if v_sal < 500 then
v_raise := .05;
elsif v_sal < 1000 then
v_raise := .07;
else
v_raise := .04;
end if;
update_sal(v_raise);
end;
function calc_tax(p_sal number) return number
is
begin
return p_sal * tax_rate;
end;
end;
The question is "How many public procedures are in MANAGE_EMPS package ?" I answered "three". How can it be wrong ? Clearly 3 functions are mentioned in package specification. That procedure whose declaration/body is in package's body, then its private. Here in body, procedure UPDATE_SAL is private. But the correct answer is: "none". NO public procedures ? How ?