1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Description: <Retourne l'indicatif de zone d'un numero de FAX>
-- =============================================
ALTER FUNCTION GetZoneFax (@FaxNum varchar(255)) RETURNS char(2) AS
BEGIN
DECLARE @RES char(2)
--Le numero maintenant commence par 00
IF SUBSTRING(@FaxNum, 1, 2) = '00'
BEGIN
--Si le 3 eme numero est en 1 on est en plan de numerotation Nord americain
IF SUBSTRING(@FaxNum, 3, 1) = '1'
BEGIN
--On recupere les 4 premiers caracteres pour voir s'il corresponde à un sous zone des USA
SELECT @RES = TB_Indicatifs.ZoneId FROM TB_Indicatifs WHERE(TB_Indicatifs.Indicatif = SUBSTRING(@FaxNum, 3, 4))
--Si ça ne correspond pas à un code des USA, on retourne la zone des USA standard
IF @RES IS NULL
BEGIN
SELECT @RES = TB_Indicatifs.ZoneId FROM TB_Indicatifs WHERE(TB_Indicatifs.Indicatif = 1)
END
END
ELSE
BEGIN
--On regarde si le 1er numero correspond à une zone
SELECT @RES = TB_Indicatifs.ZoneId FROM TB_Indicatifs WHERE(TB_Indicatifs.Indicatif = SUBSTRING(@FaxNum, 3, 1))
--Si le 1er numero ne correspond pas à une zone on essaye avec 2 numeros
IF @RES IS NULL
BEGIN
SELECT @RES = TB_Indicatifs.ZoneId FROM TB_Indicatifs WHERE(TB_Indicatifs.Indicatif = SUBSTRING(@FaxNum, 3, 2))
--Si les 2 premiers numero ne correspond pas à on on essaye avec 3 numeros
IF @RES IS NULL
BEGIN
SELECT @RES = TB_Indicatifs.ZoneId FROM TB_Indicatifs WHERE(TB_Indicatifs.Indicatif = SUBSTRING(@FaxNum, 3, 3))
--Si les 3 premiers numero ne correspond pas, on retourne le code de zone inconnue
IF @RES IS NULL
BEGIN
SELECT @RES = TB_Indicatifs.ZoneId FROM TB_Indicatifs WHERE(TB_Indicatifs.Indicatif = 9999)
END
END
END
END
END
ELSE --Cas d'un numero français
BEGIN
SELECT @RES = TB_Indicatifs.ZoneId FROM TB_Indicatifs WHERE(TB_Indicatifs.Indicatif = 33)
END
RETURN @RES
END |
Partager