1. CREATE PROCEDURE [usp_TE_getBOAcctLookUp]
  2. (
  3. @AccountNum    VARCHAR(50)
  4. )
  5. AS
  6. DECLARE    @vTypeList    VARCHAR(500),
  7.         @vMatchResult    VARCHAR(10),
  8.         @vMatchList    VARCHAR(500),
  9.         @vPos        INT,
  10.         @vEntry_ID    INT,
  11.         @vRegExMatch    VARCHAR(30),
  12.         @vSQLQuery    NVARCHAR(4000)
  13. -- get a possbile list of account types to match
  14. SELECT     @vTypeList = COALESCE(@vTypeList + ',', '') + CAST(Entry_ID AS VARCHAR)
  15. FROM         TEBORAcctRegEx
  16. WHERE    RegExMatch IS NOT NULL
  17. SELECT    @vMatchList = ''
  18. SELECT    @vTypeList = @vTypeList + ','
  19. --loop through request list
  20. WHILE CHARINDEX(',', @vTypeList) > 0
  21.     BEGIN
  22.         --get next comma position for of the list
  23.         SELECT     @vPOS = CHARINDEX(',', @vTypeList)
  24.     
  25.         --get values to be used in queries below
  26.         SELECT     @vEntry_ID = LEFT(@vTypeList,@vPOS - 1)
  27.         
  28.         SELECT    @vRegExMatch = RegExMatch
  29.         FROM         TEBORAcctRegEx
  30.         WHERE    Entry_ID = @vEntry_ID
  31.         EXEC     master.dbo.xp_regex_match @AccountNum,@vRegExMatch,@vMatchResult OUTPUT
  32.             
  33.         -- if it matches then add entry id to list of matched values
  34.         IF @vMatchResult = 'Matched'
  35.             BEGIN
  36.                 SELECT @vMatchList = @vMatchList + CAST(@vEntry_ID AS VARCHAR) + ','
  37.             END
  38.         SELECT @vTypeList = STUFF(@vTypeList,1,@vPOS,'')
  39.     END
  40. -- remove the last comma
  41. SELECT @vMatchList = LEFT(@vMatchList,LEN(@vMatchList)-1)
  42. -- create dynamic query to query db for list of possible matches    
  43. SELECT    @vSQLQuery =    '    
  44.                 SELECT     Company,
  45.                         Biller_ID,
  46.                         BillerName,
  47.                         AccountExample,
  48.                         AccountExplanation,
  49.                         ContactEMail,
  50.                         ContactPhone,
  51.                         ContactFax,
  52.                         ContactInfo
  53.                 FROM        TEBORAcctRegEx
  54.                 WHERE    Entry_ID IN ('+ @vMatchList+')
  55.                 ORDER BY    BillerName
  56.                 '
  57. -- execute dynamic query
  58. EXEC sp_executesql @vSQLQuery
  59. GO