28 of 38
Usage #2: Example
uTrigger emp_audit
uBefore update on emp for each row
uDeclare
u  pragma autonomous_transaction;
uBegin
u  if (check_privileges
u   (:new.mgr,:new.job)) then
u    p_log_audit (user,
 ‘Update: rule succeeded‘,
u    ‘Update of emp.salary’,
  sysdate);
u  commit;
u  else
u     p_log_audit (user,
 ‘Update: rule FAILED‘,
u    ‘Update of emp.salary’,
  sysdate);
u   commit;
u    raise_application_error
   (-2001, ‘Access denied!’);
u  end if;
uEnd;
Function check_privileges
(i_mgr number,
    i_job_emp varchar2)
Return boolean is
v_job_mgr varchar2(2000);
Begin
   select job into v_job_mgr
   from emp where empno = i_mgr;
if  i_job_emp = ‘MANAGER’
      and i_job_mgr = ;MANAGER’
   then
        return TRUE;
   else 
        return TRUE;
end if;
End;