pears.PhoneUpdate

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

Original SQL

COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."PhoneUpdate" IS 
{CREATE FUNCTION pears.PhoneUpdate(IN NUMBER CHAR(50))
RETURNS CHAR(50)
BEGIN
  DECLARE WorkNum CHAR(50);
  //// Tidy up the NUMBER
  SET WorkNum=replacestr(TRIM(NUMBER),'-','',0);
  SET WorkNum=replacestr(WorkNum,' ','',0);
  SET WorkNum=replacestr(WorkNum,'(','',0);
  SET WorkNum=replacestr(WorkNum,')','',0);
  //// CHECK now ALL numbers
  IF patindex('%[^0-9]%',WorkNum) <> 0 THEN RETURN(NUMBER)
  END IF;
  ////
  //// CHECK FOR London (4 CHAR codes)
  CASE "left"(WorkNum,4) WHEN '0171' THEN
    SET WorkNum='020 7'+substr(WorkNum,5,3)+' '+substr(WorkNum,8,43);
    RETURN(WorkNum) WHEN '0181' THEN
    SET WorkNum='020 8'+substr(WorkNum,5,3)+' '+substr(WorkNum,8,43);
    RETURN(WorkNum)
  END CASE
  ;
  ////
  //// CHECK Martinstown, Carrickmore & Limavady (Possible confusion WITH Ballymena, Omagh & Londonderry below)
  CASE "left"(WorkNum,6) WHEN '012667' THEN //*Martinstown*//
    SET WorkNum='028 217'+substr(WorkNum,7,1)+' '+substr(WorkNum,8,46);
    RETURN(WorkNum) WHEN '015047' THEN //*Limavady*//
    SET WorkNum='028 777'+substr(WorkNum,7,1)+' '+substr(WorkNum,8,46);
    RETURN(WorkNum) WHEN '016627' THEN //*Carrickmore*//
    SET WorkNum='028 807'+substr(WorkNum,7,1)+' '+substr(WorkNum,8,46);
    RETURN(WorkNum)
  END CASE
  ; ////
  //// CHECK FOR other UK Cities (5 CHAR STD codes)
  CASE "left"(WorkNum,5) WHEN '01222' THEN //*Cardiff*//
    SET WorkNum='029 20'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01203' THEN //*Coventry*//
    SET WorkNum='024 76'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01705' THEN //*Portsmouth*//
    SET WorkNum='023 92'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01703' THEN //*Southampton*//
    SET WorkNum='023 80'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01232' THEN //*Belfast*//
    SET WorkNum='028 90'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01266' THEN //*Ballymena - check 5 or 6 digit local number*//
    IF LENGTH(WorkNum) = 10 THEN
      SET WorkNum='028 256'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46)
    ELSE SET WorkNum='028 25'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45)
    END IF;
    RETURN(WorkNum) WHEN '01754' THEN //*Larne*//
    SET WorkNum='028 28'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01504' THEN //*Londonderry*//
    SET WorkNum='028 71'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01265' THEN //*Colraine - check 5 or 6 digit local number*//
    IF LENGTH(WorkNum) = 10 THEN
      SET WorkNum='028 703'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46)
    ELSE SET WorkNum='028 70'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45)
    END IF;
    RETURN(WorkNum) WHEN '01648' THEN //*Magherafelt - check 5 or 6 digit local number*//
    IF LENGTH(WorkNum) = 10 THEN
      SET WorkNum='028 796'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46)
    ELSE SET WorkNum='028 79'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45)
    END IF;
    RETURN(WorkNum) WHEN '01247' THEN //*Bangor*//
    SET WorkNum='028 91'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01846' THEN //*Lisburn*//
    SET WorkNum='028 92'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01960' THEN //*Ballyclare*//
    SET WorkNum='028 93'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01849' THEN //*Antrim*//
    SET WorkNum='028 94'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01238' THEN //*Saintfield*//
    SET WorkNum='028 97'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01662' THEN //*Omagh*//
    SET WorkNum='028 82'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01868' THEN //*Dungannon*//
    SET WorkNum='028 87'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01396' THEN //*Downpatrick*//
    SET WorkNum='028 44'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01693' THEN //*Newry - check 5 or 6 digit local number*//
    IF LENGTH(WorkNum) = 10 THEN
      SET WorkNum='028 302'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46)
    ELSE SET WorkNum='028 30'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45)
    END IF;
    RETURN(WorkNum) WHEN '01861' THEN //*Armagh*//
    SET WorkNum='028 37'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01762' THEN //*Portadown*//
    SET WorkNum='028 38'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum) WHEN '01365' THEN //*Enniskillen*//
    SET WorkNum='028 66'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45);
    RETURN(WorkNum)
  END CASE
  ;
  //// CHECK FOR other UK Cities (6 CHAR STD codes)
  CASE "left"(WorkNum,6) WHEN '012657' THEN //*Ballycastle*//
    SET WorkNum='028 207'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '012656' THEN //*Ballymoney*//
    SET WorkNum='028 276'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '012665' THEN //*Kilrea*//
    SET WorkNum='028 295'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '016626' THEN //*Newtonstewart*//
    SET WorkNum='028 816'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '016625' THEN //*Ballygawley*//
    SET WorkNum='028 855'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '016487' THEN //*Cookstown*//
    SET WorkNum='028 867'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '013655' THEN //*Fivemiletown*//
    SET WorkNum='028 895'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '018206' THEN //*Banbridge*//
    SET WorkNum='028 406'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '016937' THEN //*Rostrevor*//
    SET WorkNum='028 417'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '012477' THEN //*Kircubbin*//
    SET WorkNum='028 427'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '013967' THEN //*Newcastle*//
    SET WorkNum='028 437'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '013657' THEN //*Lisnaskea*//
    SET WorkNum='028 677'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum) WHEN '013656' THEN //*Kesh*//
    SET WorkNum='028 686'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46);
    RETURN(WorkNum)
  END CASE
  ;
  //// CHECK FOR OLD STYLE mobile numbers
  IF "left"(WorkNum,4) = '0374' AND "left"(WorkNum,5) <> '03745' THEN
    SET WorkNum='07'+substr(WorkNum,2,3)+' '+substr(WorkNum,5,46);
    RETURN(WorkNum)
  END IF;
  IF "left"(WorkNum,2) = '04' THEN
    SET WorkNum='07'+substr(WorkNum,2,3)+' '+substr(WorkNum,5,46);
    RETURN(WorkNum)
  END IF;
  IF "left"(WorkNum,4) IN('0585','0589','0705','0802','0831','0850','0860','0881','0973','0976','0966') THEN
    SET WorkNum='07'+substr(WorkNum,2,3)+' '+substr(WorkNum,5,46);
    RETURN(WorkNum)
  END IF;
  IF "left"(WorkNum,5) IN('08362','08363','08365','08366','08367') THEN
    SET WorkNum='07'+substr(WorkNum,2,3)+' '+substr(WorkNum,5,46);
    RETURN(WorkNum)
  END IF;
  RETURN(NUMBER)
END
}