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;
/
获取公共用户及trigger自动写入用户信息
最新推荐文章于 2019-10-30 09:38:09 发布