日期:2014-05-17  浏览次数:20784 次

ORALCE 脚本
一张表T_JZG_JBXX
主要字段为:
ZGH   职工号       NOT MULL
XM    中文姓名     NOT MULL
XMPY  姓名拼音     NULL
客户想实现姓名首字母查询,现已对表中的XMPY进行了维护,但是对今后再增加的人员也要XMPY自动转换为中文姓名的首字母。
本人做了个触发器:

create or replace trigger biu_t_jzg_jbxx_XMPY
  after insert on t_jzg_jbxx
  referencing old as old_value 
              new as new_value
  for each row

begin
  if inserting then
    update t_jzg_jbxx
       set xmpy = F_TRANS_PINYIN_CAPITAL(:new_value.xm)
     where zgh = :new_value.zgh;
  end if;
end;


编译通过,而且在测试表中也能够实现自动更新姓名首字母,但是在实际的系统中,添加人员时,系统会报错。
公司同事认为触发器不稳定,让我做个脚本 服务器定时执行函数
但我对脚本一点都不熟悉。希望大家告诉我这个脚本怎么写。
谢谢了!

------最佳解决方案--------------------
dbms_job
------其他解决方案--------------------

--给你一个JOB参考下..
--job_action 是你要定时跑的 过程.. 我的例子 每天10点跑。
begin
  sys.dbms_scheduler.create_job(job_name            => '任务名称',
                                job_type            => 'STORED_PROCEDURE',
                                job_action          => 'scott.Pkg_业务处理.Prc_更新姓名拼音',
                                start_date          => to_date('21-09-2012 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                                repeat_interval     => 'Freq=Daily;Interval=1;ByHour=22;ByMinute=00;BySecond=00',
                                end_date            => to_date(null),
                                job_class           => 'DEFAULT_JOB_CLASS',
                                enabled             => true,
                          &nbs