0
votes

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 ?

1

1 Answers

4
votes

The correct answer is three. There are three public procedures in the package.

Note:

The package design could be improved. v_id should be a parameter and not a global variable.