设为首页 收藏本站
查看: 628|回复: 0

[经验分享] Oracle Stored Procedure Sample

[复制链接]

尚未签到

发表于 2016-7-19 12:59:07 | 显示全部楼层 |阅读模式
  
  CREATE OR REPLACE PROCEDURE TEST
  (
  IN_BANK IN VARCHAR2,
  IN_BROKERTYPE IN VARCHAR2,
  IN_ISOESFORCELOGON IN VARCHAR2
  )
  AS
  prodaltnum prod_alt_cde.prod_alt_num%TYPE;
  var_midfsDownNo NUMBER(2):=-1;
  var_fdsLinkStatusDownNo NUMBER(2):=-1;
  var_fdsLinkStatusUpNo NUMBER(2):=-1;
  var_oesLinkStatus VARCHAR2(1):='F';
  var_timeout NUMBER(3):=300;
  var_sleeptime NUMBER(2):=10;
  var_sleeptimeTotal NUMBER(3):=0;
  var_mktWatchStatusNoP NUMBER(2):=-1;
  var_mktWatchStatusNoS NUMBER(2):=-1;
  
  exp_invalidBank EXCEPTION;
  exp_midfs EXCEPTION;
  exp_fds EXCEPTION;
  exp_oesForceLogon EXCEPTION;
  exp_stopFDSFailed EXCEPTION;
  BEGIN
  
  ---------------------------------------------
  IF IN_BANK != 'HHHH' AND IN_BANK != 'SSSS' THEN
  RAISE exp_invalidBank;
  COMMIT;
  END IF;
  
  ---- STEP 0, enable MIDFS link, full price download for later order preparation
  -- UPDATE MKT_DATA_FEED_STAT SET TRMT_DATA_FEED_IND = 'N', SESS_LA_SEQ_NUM = -1;
  -- COMMIT;
  
  -- var_sleeptimeTotal := 0;
  -- WHILE var_midfsDownNo != 0 AND var_sleeptimeTotal < var_timeout LOOP
  --   DBMS_LOCK.SLEEP(var_sleeptime);
  --   var_sleeptimeTotal := var_sleeptimeTotal + var_sleeptime;
  --   SELECT Count(*) INTO var_midfsDownNo FROM MKT_DATA_FEED_STAT WHERE SESS_LA_SEQ_NUM = -1;
  -- END LOOP;
  
  -- IF var_sleeptimeTotal >= var_timeout THEN
  --   RAISE exp_midfs;
  -- END IF;
  
  ---- STEP 0, disable MIDFS link,
  -- UPDATE MKT_DATA_FEED_STAT SET TRMT_DATA_FEED_IND = 'Y';
  -- COMMIT;
  
  ---- STEP 0, reset Location
  IF IN_BANK = 'HHHH' THEN
  update MKT_DATA_FEED_STAT set LOC_PRC_SERVR_CDE=1 WHERE isnt_name in ('HKHHHHMF01','HKHHHHMF11','HKHHHHMF21','HKHHHHMF31','HKHHHHMF41','HKHHHHMF51');
  update MKT_DATA_FEED_STAT set LOC_PRC_SERVR_CDE=2 WHERE isnt_name in ('HKHHHHMF02','HKHHHHMF12','HKHHHHMF22','HKHHHHMF32','HKHHHHMF42','HKHHHHMF52');
  COMMIT;
  ELSIF IN_BANK = 'SSSS' THEN
  update MKT_DATA_FEED_STAT set LOC_PRC_SERVR_CDE=1 WHERE isnt_name in ('HKSSSSMF01','HKSSSSMF11','HKSSSSMF21','HKSSSSMF31','HKSSSSMF41','HKSSSSMF51');
  update MKT_DATA_FEED_STAT set LOC_PRC_SERVR_CDE=2 WHERE isnt_name in ('HKSSSSMF02','HKSSSSMF12','HKSSSSMF22','HKSSSSMF32','HKSSSSMF42','HKSSSSMF52');
  COMMIT;
  END IF;
  
  -- Patch for both FDS/OES --
  UPDATE RTP_SYS_PARM SET SYS_PARM_VALUE_TEXT = (SELECT TO_CHAR(SYS_AUTO_GENR_CURR_DT,'yyyyMMdd')
  FROM RTP_EXCHG_CTRY_DT WHERE CTRY_PROD_EXCHG_MKT_CDE = 'HK')
  WHERE SYS_PARM_NAME IN ('BATCH_COND_ORDER_RESEND_DATE','BATCH_UNCOND_ORDER_RESEND_DATE','LAST_ORDER_REPOSTING_DATE') AND CTRY_PROD_EXCHG_MKT_CDE = 'HK';
  COMMIT;
  
  ---------------------------------------------
  ---- STEP 1, update SYS_PARM (update this if require OES. Reminded that TIG is also required in MR mode - send heartbeat to OES in order to maintain link status) <--- even if FDS only, should run this step also!!!!
  UPDATE TRD_INTF_CTL
  SET trd_ifc_ctl_prm_text = (SELECT to_char(sys_auto_genr_curr_dt,'yyyyMMdd') FROM RTP_EXCHG_CTRY_DT where CTRY_PROD_EXCHG_MKT_CDE = 'HK')
  WHERE trd_ifc_ctl_prm_type = 'tryOnDate' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK';
  
  UPDATE TRD_INTF_CTL
  SET trd_ifc_ctl_prm_text = (SELECT to_char(sys_auto_genr_curr_dt - 10,'yyyyMMdd') FROM RTP_EXCHG_CTRY_DT where CTRY_PROD_EXCHG_MKT_CDE = 'HK')
  WHERE trd_ifc_ctl_prm_type = 'tryOffDate' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK';
  COMMIT;
  
  ---------------------------------------------
  ---- STEP 2, SQL for toggling percentage (HHHH ONLY)
  -- verify
  -- select * from DEAL_PARTY_REC_LOG_CNTL WHERE BROKER_CNTNG_MODE_CDE = 'N' AND GRP_SYS_PARM_CUST_CDE = 'PFS';
  
  IF IN_BANK = 'HHHH' THEN
  -- update OES
  UPDATE DEAL_PARTY_REC_LOG_CNTL SET DEAL_BROKER_SYS_PROC_PCT = 0
  WHERE DEAL_PARTY_CDE = 'B01089'
  AND BROKER_CNTNG_MODE_CDE = 'N'
  AND GRP_SYS_PARM_CUST_CDE = 'PFS';
  
  -- update FDS
  UPDATE DEAL_PARTY_REC_LOG_CNTL SET DEAL_BROKER_SYS_PROC_PCT = 100
  WHERE DEAL_PARTY_CDE = 'B01490'
  AND BROKER_CNTNG_MODE_CDE = 'N'
  AND GRP_SYS_PARM_CUST_CDE = 'PFS';
  
  COMMIT;
  END IF;
  
  ---------------------------------------------
  ---- STEP 3, update Trading session on SUNDAY
  UPDATE TRD_SESS SET TRD_SESS_START_TM = '50000', TRD_SESS_END_TM = '85959'
  WHERE PROD_TYPE='LEQU' and TRD_SB_SESS_CDE='SESS01' and TRD_SESS_CDE='NORMAL' AND WKDY_TDY_CDE = 7;
  
  UPDATE TRD_SESS SET TRD_SESS_START_TM = '90000', TRD_SESS_END_TM = '230159'
  WHERE PROD_TYPE='LEQU' and TRD_SB_SESS_CDE='SESS02' and TRD_SESS_CDE='NORMAL' AND WKDY_TDY_CDE = 7;
  
  UPDATE TRD_SESS SET TRD_SESS_START_TM = '230200', TRD_SESS_END_TM = '235959'
  WHERE PROD_TYPE='LEQU' and TRD_SB_SESS_CDE='SESS03' and TRD_SESS_CDE='NORMAL' AND WKDY_TDY_CDE = 7;
  
  COMMIT;
  
  -- STEP3, Health check
  -- select * from TRD_SESS where PROD_TYPE='LEQU' and TRD_SESS_CDE='NORMAL' AND WKDY_TDY_CDE = 7;
  
  ---------------------------------------------
  ---- STEP 4, Enable OES Link status (update this if require OES.)
  ---- Reminded that TIG is also required in MR mode - send heartbeat to OES in order to maintain link status)
  ---- STEP 4: Method 1
  IF IN_BROKERTYPE = 'OES' AND IN_ISOESFORCELOGON = 'NO' THEN
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'N' WHERE SYS_PROD_SUPLY_NUM='OES' AND TRD_IFC_CTL_PRM_TYPE='ctgIdc';
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'false' WHERE SYS_PROD_SUPLY_NUM='OES' AND TRD_IFC_CTL_PRM_TYPE='autoSwtOff';
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = '20130312160000' WHERE TRD_IFC_CTL_PRM_TYPE in ('shbDatTime','rhbDatTime') AND SYS_PROD_SUPLY_NUM = 'OES';
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'L' where SYS_PROD_SUPLY_NUM = 'OES' and TRD_IFC_CTL_PRM_TYPE ='linkStatus';
  COMMIT;
  
  DBMS_OUTPUT.PUT_LINE('Enabled OES Link.');
  ---- STEP 4, Enable OES Link status HEALTH CHECK
  -- select * from TRD_INTF_CTL where SYS_PROD_SUPLY_NUM = 'OES' and TRD_IFC_CTL_PRM_TYPE ='linkStatus';
  -- select * from TRD_INTF_CTL where SYS_PROD_SUPLY_NUM = 'OES' and TRD_IFC_CTL_PRM_TYPE ='autoSwtOff';
  -- select * from TRD_INTF_CTL where SYS_PROD_SUPLY_NUM = 'OES' and TRD_IFC_CTL_PRM_TYPE in ('shbDatTime','rhbDatTime');
  -- SELECT * FROM TRD_INTF_CTL WHERE SYS_PROD_SUPLY_NUM = 'OES' AND TRD_IFC_CTL_PRM_TYPE ='ctgIdc';
  
  ---- STEP 4: Method 2
  ---- LOGON OES using ForceLogon
  ---- **(don't apply to automated script)**
  ELSIF IN_BROKERTYPE = 'OES' AND IN_ISOESFORCELOGON = 'YES' THEN
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'true' WHERE SYS_PROD_SUPLY_NUM = 'OES' and TRD_IFC_CTL_PRM_TYPE ='forceLogon';
  COMMIT;
  
  ---- After patching to 'true', it triggered logon to OES automatically
  var_sleeptimeTotal := 0;
  WHILE var_oesLinkStatus != 'L' AND var_sleeptimeTotal < var_timeout LOOP
  DBMS_LOCK.SLEEP(var_sleeptime);
  var_sleeptimeTotal := var_sleeptimeTotal + var_sleeptime;
  SELECT TRD_IFC_CTL_PRM_TEXT INTO var_oesLinkStatus from TRD_INTF_CTL where SYS_PROD_SUPLY_NUM = 'OES' and TRD_IFC_CTL_PRM_TYPE ='linkStatus';
  END LOOP;
  
  IF var_sleeptimeTotal >= var_timeout THEN
  RAISE exp_oesForceLogon;
  END IF;
  
  DBMS_OUTPUT.PUT_LINE('Enabled OES Link with ForceLogon.');
  END IF;
  
  ---------------------------------------------
  ---- STEP 5, Enable GFIX Link status (HHHH only)
  IF IN_BANK = 'HHHH' AND IN_BROKERTYPE = 'FDS' THEN
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'L'
  WHERE SYS_PROD_SUPLY_NUM='FDS' AND TRD_IFC_CTL_PRM_TYPE='linkStatus' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK';
  
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'N'
  WHERE SYS_PROD_SUPLY_NUM='FDS' AND TRD_IFC_CTL_PRM_TYPE='ctgIdc' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK';
  
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'Y'
  WHERE SYS_PROD_SUPLY_NUM='FDS' AND TRD_IFC_CTL_PRM_TYPE='ctgUpdSup' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK';
  
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'L'
  WHERE SYS_PROD_SUPLY_NUM='FDS' AND TRD_IFC_CTL_PRM_TYPE='shdLnkStat' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK';
  
  -- start socket
  -- will become 'STARTED'
  UPDATE TRD_INTF_GRP_CTL SET TRD_INTF_GRP_CTL_PRM_TEXT='START'
  WHERE SYS_PROD_SUPLY_NUM='FDS' AND TRD_INTF_GRP_CTL_PRM_NAME='appiaInstruction'
  AND APP_INSTC_RUN_NAME LIKE 'HKHHHHMF%' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK';
  
  COMMIT;
  
  var_sleeptimeTotal := 0;
  WHILE var_fdsLinkStatusDownNo != 0 AND var_sleeptimeTotal < var_timeout LOOP
  DBMS_LOCK.SLEEP(var_sleeptime);
  var_sleeptimeTotal := var_sleeptimeTotal + var_sleeptime;
  SELECT Count(*) INTO var_fdsLinkStatusDownNo FROM TRD_INTF_GRP_CTL
  WHERE SYS_PROD_SUPLY_NUM='FDS' AND TRD_INTF_GRP_CTL_PRM_NAME='appiaInstruction' AND
  APP_INSTC_RUN_NAME LIKE 'HKHHHHMF%' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK' AND TRD_INTF_GRP_CTL_PRM_TEXT!='STARTED';
  END LOOP;
  
  IF var_sleeptimeTotal >= var_timeout THEN
  RAISE exp_fds;
  END IF;
  
  DBMS_OUTPUT.PUT_LINE('GFIX are all started');
  END IF;
  -- HEALTH CHECK
  -- Select * from TRD_INTF_GRP_CTL  where sys_prod_suply_num='FDS' and trd_intf_grp_ctl_prm_name='appiaInstruction' and APP_INSTC_RUN_NAME like 'HKHHHHMF%' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK';
  -- select * from trd_intf_ctl where sys_prod_suply_num='FDS' and trd_ifc_ctl_prm_type in ('linkStatus', 'ctgIdc', 'shdLnkStat','ctgUpdSup') and ctry_prod_exchg_mkt_cde='HK';
  
  ---- STEP 6, Order preparation
  prepareOrder(IN_BANK);
  
  ---- STEP 7, Primary MDR full price download, will send out order to GFIX
  UPDATE MKT_DATA_FEED_STAT SET TRMT_DATA_FEED_IND = 'N', SESS_LA_SEQ_NUM = -1;
  COMMIT;
  
  var_sleeptimeTotal := 0;
  WHILE var_midfsDownNo != 0 AND var_sleeptimeTotal < var_timeout LOOP
  DBMS_LOCK.SLEEP(var_sleeptime);
  var_sleeptimeTotal := var_sleeptimeTotal + var_sleeptime;
  SELECT Count(*) INTO var_midfsDownNo FROM MKT_DATA_FEED_STAT WHERE SESS_LA_SEQ_NUM = -1;
  END LOOP;
  
  IF var_sleeptimeTotal >= var_timeout THEN
  RAISE exp_midfs;
  END IF;
  
  
  -- STEP 7, HEALTH CHECK (Expected result: RD_MKT_WTCH_STAT_CDE P -> S)
  -- SELECT pa.prod_alt_num, tp.PROD_NUM, TRD_ORD_REFER_NUM, TRD_ORD_REFER_TYPE_CDE, PORTF_ORD_REFER_TYPE_CDE, PORTF_ORD_REFER_NUM, tp.REC_UPDT_LA_DT_TM, DEAL_PARTY_CDE, CTPT_RSULT_INPUT_CDE, ORD_MKT_WTCH_STAT_CDE INTO var_mktWatchStatus
  -- FROM trd_proc tp, prod_alt_cde pa
  -- WHERE ORD_FORMT_RMRK_TEXT = '### TEST MOD6 UPGRADE PRIMARY ###' AND pa.prod_num = tp.prod_num AND pa.PROD_CDE_ALT_CLASS_CDE = 'P'
  -- ORDER BY  tp.REC_UPDT_LA_DT_TM DESC;
  
  var_sleeptimeTotal := 0;
  WHILE var_mktWatchStatusNoP != 0 AND var_sleeptimeTotal < var_timeout LOOP
  DBMS_LOCK.SLEEP(var_sleeptime);
  var_sleeptimeTotal := var_sleeptimeTotal + var_sleeptime;
  SELECT Count(1) ORD_MKT_WTCH_STAT_CDE INTO var_mktWatchStatusNoP FROM trd_proc tp, prod_alt_cde pa
  WHERE ORD_FORMT_RMRK_TEXT = '### TEST MOD6 UPGRADE PRIMARY ###' AND pa.prod_num = tp.prod_num AND pa.PROD_CDE_ALT_CLASS_CDE = 'P' AND ORD_MKT_WTCH_STAT_CDE = 'P';
  END LOOP;
  
  SELECT Count(1) ORD_MKT_WTCH_STAT_CDE INTO var_mktWatchStatusNoS FROM trd_proc tp, prod_alt_cde pa
  WHERE ORD_FORMT_RMRK_TEXT = '### TEST MOD6 UPGRADE PRIMARY ###' AND pa.prod_num = tp.prod_num AND pa.PROD_CDE_ALT_CLASS_CDE = 'P' AND ORD_MKT_WTCH_STAT_CDE = 'P';
  IF var_sleeptimeTotal >= var_timeout THEN
  DBMS_OUTPUT.PUT_LINE('Sent orders seccessfully: ' || var_mktWatchStatusNoS);
  DBMS_OUTPUT.PUT_LINE('Sent orders failed: ' || var_mktWatchStatusNoP);
  ELSE
  DBMS_OUTPUT.PUT_LINE('All orders have been sent out. Totally: ' || var_mktWatchStatusNoS);
  END IF;
  
  -- STEP 7, STOP Primary MDR MIDFS
  UPDATE MKT_DATA_FEED_STAT SET TRMT_DATA_FEED_IND = 'Y';
  COMMIT;
  
  ---- STEP 8, Order preparation
  prepareOrder(IN_BANK);
  
  --- STEP 9 MDR failover
  IF IN_BANK = 'HHHH' THEN
  UPDATE MKT_DATA_FEED_STAT SET LOC_PRC_SERVR_CDE=1 WHERE ISNT_NAME IN ('HKHHHHMF02','HKHHHHMF12','HKHHHHMF22','HKHHHHMF32','HKHHHHMF42','HKHHHHMF52');
  UPDATE MKT_DATA_FEED_STAT SET LOC_PRC_SERVR_CDE=2 WHERE ISNT_NAME IN ('HKHHHHMF01','HKHHHHMF11','HKHHHHMF21','HKHHHHMF31','HKHHHHMF41','HKHHHHMF51');
  COMMIT;
  ELSIF IN_BANK = 'SSSS' THEN
  UPDATE MKT_DATA_FEED_STAT SET LOC_PRC_SERVR_CDE=1 WHERE ISNT_NAME IN ('HKSSSSMF02','HKSSSSMF12','HKSSSSMF22','HKSSSSMF32','HKSSSSMF42','HKSSSSMF52');
  UPDATE MKT_DATA_FEED_STAT SET LOC_PRC_SERVR_CDE=2 WHERE ISNT_NAME IN ('HKSSSSMF01','HKSSSSMF11','HKSSSSMF21','HKSSSSMF31','HKSSSSMF41','HKSSSSMF51');
  COMMIT;
  END IF;
  
  ---- STEP 10, Secondary MDR full price download, will send out order to GFIX
  UPDATE MKT_DATA_FEED_STAT SET TRMT_DATA_FEED_IND = 'N', SESS_LA_SEQ_NUM = -1 ;
  COMMIT;
  
  var_sleeptimeTotal := 0;
  WHILE var_midfsDownNo != 0 AND var_sleeptimeTotal < var_timeout LOOP
  DBMS_LOCK.SLEEP(var_sleeptime);
  var_sleeptimeTotal := var_sleeptimeTotal + var_sleeptime;
  SELECT Count(*) INTO var_midfsDownNo FROM MKT_DATA_FEED_STAT WHERE SESS_LA_SEQ_NUM = -1;
  END LOOP;
  
  IF var_sleeptimeTotal >= var_timeout THEN
  RAISE exp_midfs;
  END IF;
  
  var_sleeptimeTotal := 0;
  WHILE var_mktWatchStatusNoP != 0 AND var_sleeptimeTotal < var_timeout LOOP
  DBMS_LOCK.SLEEP(var_sleeptime);
  var_sleeptimeTotal := var_sleeptimeTotal + var_sleeptime;
  SELECT Count(1) ORD_MKT_WTCH_STAT_CDE INTO var_mktWatchStatusNoP FROM trd_proc tp, prod_alt_cde pa
  WHERE ORD_FORMT_RMRK_TEXT = '### TEST MOD6 UPGRADE PRIMARY ###' AND pa.prod_num = tp.prod_num AND pa.PROD_CDE_ALT_CLASS_CDE = 'P' AND ORD_MKT_WTCH_STAT_CDE = 'P';
  END LOOP;
  
  SELECT Count(1) ORD_MKT_WTCH_STAT_CDE INTO var_mktWatchStatusNoS FROM trd_proc tp, prod_alt_cde pa
  WHERE ORD_FORMT_RMRK_TEXT = '### TEST MOD6 UPGRADE PRIMARY ###' AND pa.prod_num = tp.prod_num AND pa.PROD_CDE_ALT_CLASS_CDE = 'P' AND ORD_MKT_WTCH_STAT_CDE = 'P';
  IF var_sleeptimeTotal >= var_timeout THEN
  DBMS_OUTPUT.PUT_LINE('Sent orders seccessfully: ' || var_mktWatchStatusNoS);
  DBMS_OUTPUT.PUT_LINE('Sent orders failed: ' || var_mktWatchStatusNoP);
  ELSE
  DBMS_OUTPUT.PUT_LINE('All orders have been sent out. Totally: ' || var_mktWatchStatusNoS);
  END IF;
  
  -- STEP 10, STOP Seconary MDR MIDFS
  UPDATE MKT_DATA_FEED_STAT SET TRMT_DATA_FEED_IND = 'Y';
  COMMIT;
  
  ---- STEP 11 stop OES/GFIX
  -- Stop OES (if enabled)
  IF IN_BROKERTYPE = 'OES' AND IN_ISOESFORCELOGON = 'NO' THEN
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'F' WHERE SYS_PROD_SUPLY_NUM = 'OES' AND TRD_IFC_CTL_PRM_TYPE ='linkStatus';
  COMMIT;
  -- Better method is ask OES to trigger log-off
  
  ---- LOGOFF OES using ForceLogon
  ELSIF IN_BROKERTYPE = 'OES' AND IN_ISOESFORCELOGON = 'YES' THEN
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'false' WHERE SYS_PROD_SUPLY_NUM = 'OES' and TRD_IFC_CTL_PRM_TYPE ='forceLogon';
  COMMIT;
  
  ---- After patching to 'true', it triggered logon to OES automatically
  var_sleeptimeTotal := 0;
  WHILE var_oesLinkStatus = 'L' AND var_sleeptimeTotal < var_timeout LOOP
  DBMS_LOCK.SLEEP(var_sleeptime);
  var_sleeptimeTotal := var_sleeptimeTotal + var_sleeptime;
  SELECT TRD_IFC_CTL_PRM_TEXT INTO var_oesLinkStatus from TRD_INTF_CTL where SYS_PROD_SUPLY_NUM = 'OES' and TRD_IFC_CTL_PRM_TYPE ='linkStatus';
  END LOOP;
  END IF;
  
  -- Stop GFIX (HHHH only)
  -- will become 'STOPPED'
  IF IN_BANK = 'HHHH' AND IN_BROKERTYPE = 'FDS' THEN
  UPDATE TRD_INTF_GRP_CTL SET TRD_INTF_GRP_CTL_PRM_TEXT='STOP'
  WHERE SYS_PROD_SUPLY_NUM='FDS' AND TRD_INTF_GRP_CTL_PRM_NAME='appiaInstruction' AND APP_INSTC_RUN_NAME LIKE 'HKHHHHMF%';
  COMMIT;
  
  var_sleeptimeTotal := 0;
  WHILE var_fdsLinkStatusUpNo != 0 AND var_sleeptimeTotal < var_timeout LOOP
  DBMS_LOCK.SLEEP(var_sleeptime);
  var_sleeptimeTotal := var_sleeptimeTotal + var_sleeptime;
  SELECT Count(*) INTO var_fdsLinkStatusUpNo FROM TRD_INTF_GRP_CTL
  WHERE SYS_PROD_SUPLY_NUM='FDS' AND TRD_INTF_GRP_CTL_PRM_NAME='appiaInstruction' AND
  APP_INSTC_RUN_NAME LIKE 'HKHHHHMF%' AND CTRY_PROD_EXCHG_MKT_CDE = 'HK' AND TRD_INTF_GRP_CTL_PRM_TEXT!='STOPPED';
  END LOOP;
  
  UPDATE TRD_INTF_CTL SET TRD_IFC_CTL_PRM_TEXT = 'F' WHERE SYS_PROD_SUPLY_NUM='FDS' AND TRD_IFC_CTL_PRM_TYPE='linkStatus';
  COMMIT;
  
  IF var_sleeptimeTotal >= var_timeout THEN
  RAISE exp_stopFDSFailed;
  END IF;
  END IF;
  
  EXCEPTION
  WHEN exp_invalidBank THEN
  DBMS_OUTPUT.PUT_LINE('Invalid bank: ' ||  IN_BANK);
  WHEN exp_midfs THEN
  DBMS_OUTPUT.PUT_LINE('Cannot connect to MIDFS server.');
  WHEN exp_fds THEN
  DBMS_OUTPUT.PUT_LINE('Cannot connect to gfix server.');
  WHEN exp_oesForceLogon THEN
  DBMS_OUTPUT.PUT_LINE('Cannot connect to OES with forceLogon mode.');
  WHEN exp_stopFDSFailed THEN
  DBMS_OUTPUT.PUT_LINE('Cannot stop FDS socket.');
  when others then
  DBMS_OUTPUT.PUT_LINE('Exception');
  END;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-246397-1-1.html 上篇帖子: oracle的使用技巧 下篇帖子: Oracle——按时间段查询
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表