获取公共用户及trigger自动写入用户信息

create or replace package body pub_package is

--*********************************************************************************
--功能说明:
--    公共获取用户
--参数说明:
--创建说明:创建者  创建日期
--修改历史:修改者  修改日期  修改原因(简要说明)
--          暂无    暂无      暂无
--*********************************************************************************
procedure set_attributes( uid varchar2 ,uip varchar2)  as

   regionlist varchar2(100):= null;

begin

  dbms_session.set_context('aml_user_policy_context','logon','true');

  dbms_session.set_context('aml_user_policy_context','uid',uid);

  dbms_session.set_context('aml_user_policy_context','uip',uip);

end;


--*********************************************************************************
--功能说明:
--    公共获取用户
--参数说明:
--创建说明:创建者  创建日期
--修改历史:修改者  修改日期  修改原因(简要说明)
--          暂无    暂无      暂无
--*********************************************************************************
function get_user return varchar2
is
   v_user    varchar2(30);
begin

   select sys_context('aml_user_policy_context','uid') into v_user from dual ;

   if v_user is null then
      select user into v_user from dual;
   end if;

   return upper(v_user);

end get_user ;


--*********************************************************************************
--功能说明:
--    公共获取IP
--参数说明:
--创建说明:创建者  创建日期
--修改历史:修改者  修改日期  修改原因(简要说明)
--          暂无    暂无      暂无
--*********************************************************************************
function get_user_ip return varchar2
is
  v_user_ip  varchar2(50) ;
begin
  
  select sys_context('aml_user_policy_context','uip') into v_user_ip from dual ;

  if v_user_ip is null then
     v_user_ip := 'unknown';
   end if;
   
  return upper(v_user_ip);
  
end get_user_ip;


end pub_package;





--*********************************************************************************
--功能说明:插入fxq_log_bi  格式:表名_BI 
--    trigger:插入表时,自动写入创建人 创建时间 修改人 修改时间
--参数说明:
--创建说明:创建者  创建日期
--修改历史:修改者  修改日期  修改原因(简要说明)
--          暂无    暂无      暂无
--*********************************************************************************
create or replace trigger fxq_log_bi

  before insert on fxq_log
  for each row

declare

  v_current_user varchar2(60);
  v_current_date date;
  cursor c_switch(cp_switch aml_tr_switch.switch_for%type) is
  
    select status
      from aml_tr_switch
     where trigger_name = 'FXQ_LOG_BI'
       and switch_for = cp_switch;

  v_status aml_tr_switch.status%type;

  v_sqlcode varchar2(10);

  v_sqlerrm varchar2(200);

  v_error_comment varchar2(300);

begin

  v_error_comment := 'INSERT_DATA';

  open c_switch('INSERT_DATA');

  fetch c_switch
    into v_status;

  if c_switch%found and v_status = '1' then
  
    v_current_date := sysdate;
  
    if :new.created_by is not null then
      v_current_user := :new.created_by;
    else
      v_current_user := aml_pub_package.get_user;
    end if;
    :new.created_by   := upper(v_current_user);
    :new.created_date := v_current_date;
    :new.updated_by   := upper(v_current_user);
    :new.updated_date := v_current_date;
  
  end if;

  close c_switch;

exception

  when others then
  
    v_sqlcode := sqlcode;
  
    v_sqlerrm := substr(sqlerrm, 1, 200);
  
    insert into aml_tr_error_log
      (error_no, --系统错误代码
       error_message, --系统错误信息
       trigger_name, --出错的trigger
       trigger_user, --出错的用户
       date_trigger, --出错的时间
       error_comment --出错详细信息
       )
    values
      (v_sqlcode,
       v_sqlerrm,
       'FXQ_LOG_BI',
       aml_pub_package.get_user,
       sysdate,
       v_error_comment);
  
end;
/

--*********************************************************************************
--功能说明:修改fxq_log_bi  格式:表名_BI 
--    trigger:修改表时,自动写入创建人 创建时间 修改人 修改时间
--参数说明:
--创建说明:创建者  创建日期
--修改历史:修改者  修改日期  修改原因(简要说明)
--          暂无    暂无      暂无
--*********************************************************************************
create or replace trigger fxq_log_bu

  before update on fxq_log
  for each row

declare

  v_current_user varchar2(60);
  v_current_date date;
  cursor c_switch(cp_switch aml_tr_switch.switch_for%type) is
  
    select status
      from aml_tr_switch
     where trigger_name = 'FXQ_LOG_BU'
       and switch_for = cp_switch;

  v_status aml_tr_switch.status%type;

  v_sqlcode varchar2(10);

  v_sqlerrm varchar2(200);

  v_error_comment varchar2(300);

begin

  v_error_comment := 'UPDATE_DATA';

  open c_switch('UPDATE_DATA');

  fetch c_switch
    into v_status;

  if c_switch%found and v_status = '1' then
  
    v_current_date := sysdate;
  
    if :new.updated_by is not null then
      v_current_user := :new.updated_by;
    else
      v_current_user := aml_pub_package.get_user;
    end if;
    :new.updated_by   := upper(v_current_user);
    :new.updated_date := v_current_date;
  
  end if;

  close c_switch;

exception

  when others then
  
    v_sqlcode := sqlcode;
  
    v_sqlerrm := substr(sqlerrm, 1, 200);
  
    insert into aml_tr_error_log
      (error_no, --系统错误代码
       error_message, --系统错误信息
       trigger_name, --出错的trigger
       trigger_user, --出错的用户
       date_trigger, --出错的时间
       error_comment --出错详细信息
       )
    values
      (v_sqlcode,
       v_sqlerrm,
       'FXQ_LOG_BU',
       aml_pub_package.get_user,
       sysdate,
       v_error_comment);
  
end;
/
create or replace trigger fxq_status_bi

  before insert on fxq_status
  for each row

declare

  v_current_user varchar2(60);
  v_current_date date;
  cursor c_switch(cp_switch aml_tr_switch.switch_for%type) is
  
    select status
      from aml_tr_switch
     where trigger_name = 'FXQ_STATUS_BI'
       and switch_for = cp_switch;

  v_status aml_tr_switch.status%type;

  v_sqlcode varchar2(10);

  v_sqlerrm varchar2(200);

  v_error_comment varchar2(300);

begin

  v_error_comment := 'INSERT_DATA';

  open c_switch('INSERT_DATA');

  fetch c_switch
    into v_status;

  if c_switch%found and v_status = '1' then
  
    v_current_date := sysdate;
  
    if :new.created_by is not null then
      v_current_user := :new.created_by;
    else
      v_current_user := aml_pub_package.get_user;
    end if;
    :new.created_by   := upper(v_current_user);
    :new.created_date := v_current_date;
    :new.updated_by   := upper(v_current_user);
    :new.updated_date := v_current_date;
  
  end if;

  close c_switch;

exception

  when others then
  
    v_sqlcode := sqlcode;
  
    v_sqlerrm := substr(sqlerrm, 1, 200);
  
    insert into aml_tr_error_log
      (error_no, --系统错误代码
       error_message, --系统错误信息
       trigger_name, --出错的trigger
       trigger_user, --出错的用户
       date_trigger, --出错的时间
       error_comment --出错详细信息
       )
    values
      (v_sqlcode,
       v_sqlerrm,
       'FXQ_STATUS_BI',
       aml_pub_package.get_user,
       sysdate,
       v_error_comment);
  
end;
/

create or replace trigger fxq_status_bu

  before update on fxq_status
  for each row

declare

  v_current_user varchar2(60);
  v_current_date date;
  cursor c_switch(cp_switch aml_tr_switch.switch_for%type) is
  
    select status
      from aml_tr_switch
     where trigger_name = 'FXQ_STATUS_BU'
       and switch_for = cp_switch;

  v_status aml_tr_switch.status%type;

  v_sqlcode varchar2(10);

  v_sqlerrm varchar2(200);

  v_error_comment varchar2(300);

begin

  v_error_comment := 'UPDATE_DATA';

  open c_switch('UPDATE_DATA');

  fetch c_switch
    into v_status;

  if c_switch%found and v_status = '1' then
  
    v_current_date := sysdate;
  
    if :new.updated_by is not null then
      v_current_user := :new.updated_by;
    else
      v_current_user := aml_pub_package.get_user;
    end if;
    :new.updated_by   := upper(v_current_user);
    :new.updated_date := v_current_date;
  
  end if;

  close c_switch;

exception

  when others then
  
    v_sqlcode := sqlcode;
  
    v_sqlerrm := substr(sqlerrm, 1, 200);
  
    insert into aml_tr_error_log
      (error_no, --系统错误代码
       error_message, --系统错误信息
       trigger_name, --出错的trigger
       trigger_user, --出错的用户
       date_trigger, --出错的时间
       error_comment --出错详细信息
       )
    values
      (v_sqlcode,
       v_sqlerrm,
       'FXQ_STATUS_BU',
       aml_pub_package.get_user,
       sysdate,
       v_error_comment);
  
end;
/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值