问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何写一个shell脚本调用写好的oracle存储过程?

发布网友 发布时间:2022-04-08 10:02

我来回答

3个回答

懂视网 时间:2022-04-08 14:24

qingli> cat ql_mon.sh
nohup $ORACLE_HOME/bin/sqlplus -s <<!! >ql_mon_$1.log
declare
  int_count number(10);
  n         number(10);
  n_tmp     number(10);
  n_subsid  number(18);
  n_region number(5);
  v_biztype varchar2(5);
  e_My_Exception EXCEPTION;
  e_nobiztype_Exception EXCEPTION;
  v_table varchar2(100);
begin
  int_count := 0;
  n_tmp := 0;
  v_biztype := null;
  select lpad(v_biztype,2,‘0‘) into v_biztype from dual;
  for cc in (select t.*, t.rowid
               from tmp_tbcsa.$1@TMP_HS_SJYZX.HEBEI.MOBILE.COM t
              where flag =1 and  t.modflag is null
               /* and t.msisdn =‘13503355958‘*/
             /*and t.servnumber = ‘13463068105‘*/
             ) loop
    begin
    select count(*) into n_tmp from tbcs.iboss_spbizinfo where spid=cc.sp_code and bizcode = cc.oper_code;
    if n_tmp > 0 then
          select distinct t.biztype
        into v_biztype
        from tbcs.iboss_spbizinfo t
       where t.spid=cc.sp_code
         and t.bizcode = cc.oper_code;
    else
    RAISE e_nobiztype_Exception;
    end if;
    SELECT DISTINCT REGION
          INTO n_REGION
          FROM TBCS.REC_SERVNUMBER_REGION
         WHERE BEGINNUM <= cc.msisdn
           AND ENDNUM >= cc.msisdn;
      if n_region in (310, 312, 314, 316, 318) then
         select /*+ index(t,tbcs.IDX_SUBSCRIBER_SERVNUMBER) */
         count(*)
          into n_tmp
          from tbcs.subscriber t
         where t.servnumber = cc.msisdn
           and t.active = 1
           and t.region = n_region;
           if n_tmp >0 then
           select /*+ index(t,tbcs.IDX_SUBSCRIBER_SERVNUMBER) */
         t.subsid
          into n_subsid
          from tbcs.subscriber t
         where t.servnumber = cc.msisdn
           and t.active = 1
           and t.region = n_region;
          else
               n_subsid := null;
           end if;
      else
         select /*+ index(t,tbcs.IDX_SUBSCRIBER_SERVNUMBER) */
         count(*)
          into n_tmp
          from tbcs.subscriber@TBCSA_B.HEBEI.MOBILE.COM t
         where t.servnumber = cc.msisdn
           and t.active = 1
           and t.region = n_region;
        if n_tmp >0 then
        select /*+ index(t,tbcs.IDX_SUBSCRIBER_SERVNUMBER) */
         t.subsid
          into n_subsid
          from tbcs.subscriber@TBCSA_B.HEBEI.MOBILE.COM t
         where t.servnumber = cc.msisdn
           and t.active = 1
           and t.region = n_region;
         else
               n_subsid := null;
         end if;
      end if;
   
      /*select subsid
      into n_subsid
      from (select *+ index(t,tbcs.IDX_SUBSCRIBER_SERVNUMBER) *
             t.subsid
              from tbcs.subscriber t
             where t.servnumber = cc.servnumber
               and t.active = 1
               and t.region = n_region
            union
            select *+ index(t,tbcs.IDX_SUBSCRIBER_SERVNUMBER) *
             t.subsid
              from tbcs.subscriber@TBCSA_B.HEBEI.MOBILE.COM t
             where t.servnumber = cc.servnumber
               and t.region = n_region
               and t.active = 1);*/
      if (n_subsid is null) then
     
        RAISE e_My_Exception;
     
      end if;
      select count(*)
        into n
        from (select /*+ index(t,tbcs.IDX_SUBS_SPSERVICE_SUBSID)*/
               *
                from tbcs.subs_spservice t
               where t.subsid = n_subsid
                 and t.region = cc.msisdn
                 and t.spid = cc.sp_code
                 and t.spbizid = cc.oper_code
                 and (t.enddate is null or t.enddate >= sysdate)
              union
              select /*+ index(t,tbcs.IDX_SUBS_SPSERVICE_SUBSID) */
               *
                from tbcs.subs_spservice@TBCSA_B.HEBEI.MOBILE.COM t
               where t.subsid = n_subsid
                 and t.region = n_region
                 and t.spid = cc.sp_code
                 and t.spbizid = cc.oper_code
                 and (t.enddate is null or t.enddate >= sysdate));
   
      if n > 0 then
     
        RAISE e_My_Exception;
      end if;
        if v_biztype = ‘53‘ then
         d110601.pro_djp_to_mca_cmmb(
                                n_region,
                               cc.msisdn,
                               v_biztype,
                               cc.sp_code,
                               cc.oper_code,
                               ‘07‘,
                               cc.chrg_type+1);
        else   
        d110601.pro_djp_to_mca(n_region,
                               cc.msisdn,
                               v_biztype,
                               cc.sp_code,
                               cc.oper_code,
                               ‘07‘,
                               cc.chrg_type+1);
        end if;
      update tmp_tbcsa.$1@TMP_HS_SJYZX.HEBEI.MOBILE.COM t
         set t.modflag = ‘1‘
       where t.rowid = cc.rowid;
   
      int_count := int_count + 1;
   
      if int_count = 1000 then
        int_count := 0;
        commit;
      end if;
   
    exception
      when e_My_Exception then
        update tmp_tbcsa.$1@TMP_HS_SJYZX.HEBEI.MOBILE.COM t
           set t.modflag = ‘2‘
         where t.rowid = cc.rowid;
       WHEN  e_nobiztype_Exception THEN
        update tmp_tbcsa.$1@TMP_HS_SJYZX.HEBEI.MOBILE.COM t
           set t.modflag = ‘3‘
         where t.rowid = cc.rowid;
     
    end;
  
  end loop;
  commit;
end;
/
exit;
 
 
这样运行:
nohup ql_mon.sh TMP_12580_BOSSMINUS_20110915 &
nohup ql_mon.sh TMP_HBGJ_BOSSMINUS_20110915 &
nohup ql_mon.sh TMP_SJZQ_BOSSMINUS_20110915 &
nohup ql_mon.sh TMP_WXTYJLB_BOSSMINUS_20110915 &
nohup ql_mon.sh TMP_QTY_BOSSMINUS_20110915 &
nohup ql_mon.sh TMP_SJSJ_BOSSMINUS_20110915 &
nohup ql_mon.sh TMP_SJYL_BOSSMINUS_20110915 &
nohup ql_mon.sh TMP_KX_BOSSMINUS_20110915 &
nohup ql_mon.sh TMP_SJB_BOSSMINUS_20110915 &

把ORACLE过程写入SHELL脚本

标签:

热心网友 时间:2022-04-08 11:32

#!/bin/ksh
sqlplus -S user/password <<EOF
exec procre();
exit;
EOF

热心网友 时间:2022-04-08 12:50

用oracle的job调用存储过程就行了追问job我知道,但目前要求用shell脚本,请给与指点,谢谢。。。。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 派派红包已经认定了手机号,那么怎么解绑手机号 如图:怎么删除,或者 怎样消除 消除星星乐真的能赚钱吗 怎么查询开心消消乐绑定的 女朋友不开心怎么办 怎样解绑微信手机号码绑定 怎样退出微信解绑 遇到女朋友不开心,又不肯说明原因我该怎么办? 手机怎样解除绑定的别人的 女朋友不开心的时候,男生该怎么办? 女性朋友不开心怎么办 消除星星乐能赚钱吗,绑定了微信,有没有危风险? 微信如何解绑消水果乐园? 谁知道宾果消消乐怎样解除微信绑定? 女朋友不开心了怎么办? 女朋友不开心的时候,你都会怎么办? 2021年买OPPOR11多少钱 感情中,女朋友不开心了,这种情况该怎么办? 我的一个WORD文档中有上千页账单,每页账单针对一个客户,怎样才能使每个客户打开文档后只能看到自己的账单 制作账单表格 我的vivo手机用华为的耳机会使手机坏掉吗? 怎样查学车刷卡学时 怎么查驾驶学时查询 科目三已刷公里数在手机上怎么查询 华为手机录唱吧用其它品牌耳机可以吗 驾考刷学时 驾校需要刷满26个学时才能考科目一? final cut pro7如何编辑音频 final cut pro 可以剪辑音频吗 怎么把音乐导到finalcutprox里 Final Cut Pro X怎么锁定音轨 final cut pro 图片剪辑音乐如何打节奏点,如果用耳朵听的话,有时时间轴走的卡卡的,怎么看得准呢。 final cut pro x 如何自动同步音轨 怎么把不同机位的视频自动将音频对好 ab密码箱忘记密码怎么办?急!!! 在手机设置里怎么查找AB锁? 拉杆箱密码锁的锁背面有个ab开关 打开箱子后拨动一下ab锁后就把箱子锁 我家门锁是ab型的今天出去玩把钥匙弄丢了,听说ab型的锁不能配是吗? 防盗门AB锁怎么用? 万嘉ab锁使用说明 什么是ab锁芯? 防盗门AB锁钥匙问题