Advertisement
Guest User

Untitled

a guest
Aug 3rd, 2012
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.67 KB | None | 0 0
  1.  
  2. ALTER PROCEDURE [dbo].[usp_BusinessUser_Search] ( @Business nVarChar(255) = NULL
  3. , @Location nVarChar(255) = NULL
  4. , @PageNumber Int = 1
  5. , @RecordsPerPage Int = 10
  6. , @TotalRecords Int OUTPUT)
  7. AS
  8. BEGIN
  9. SET NOCOUNT ON;
  10.  
  11. DECLARE @SQL NVARCHAR(MAX)
  12. , @CacheTable SYSNAME
  13. , @TotalRows Int
  14. , @Category VarChar(255)
  15. , @BusinessCategory Int
  16. , @TownCounty VarChar(50)
  17. , @PcodeTownCounty VarChar(50)
  18.  
  19. INSERT Voucher_SearchHistory (Keyword, Location)
  20. SELECT NULLIF(@Business,''), NULLIF(@Location,'')
  21.  
  22. -- ============================================================
  23. -- Set Filter Options
  24. -- ============================================================
  25. -- Location
  26. SET @Location = NULLIF(NULLIF(NULLIF(@Location,''),'UK'),'United Kingdom')
  27.  
  28. IF @Location IS NOT NULL
  29. BEGIN
  30. -- Match to location
  31. SELECT @PcodeTownCounty = PCodeTownCounty
  32. FROM dbo.Res_PostcodeDistrict
  33. WHERE PCodeTownCounty LIKE '' + @Location + '%'
  34.  
  35. SELECT @TownCounty = TownCounty
  36. FROM dbo.Res_PostcodeDistrict
  37. WHERE TownCounty LIKE '' + @Location + '%'
  38. END
  39.  
  40. -- Category / Business
  41. SET @Business = NULLIF(NULLIF(@Business,''),'All')
  42.  
  43. -- Match to category
  44. SELECT @BusinessCategory = b.CategoryID
  45. FROM Res_BusinessCategory b
  46. LEFT OUTER JOIN Res_BusinessSubCategory bsc on b.CategoryId = bsc.CategoryID
  47. WHERE Category like '' + @Business + '%' OR SubCategory LIKE '' + @Business + '%'
  48.  
  49. -- ============================================================
  50. -- New Cached Table Name
  51. -- ============================================================
  52. SELECT @CacheTable = REPLACE('[Cache_' + REPLACE(COALESCE(NULLIF(ISNULL(CAST(@BusinessCategory AS VarChar), REPLACE(@Business, '''', '')),''),'All') + '_' + COALESCE(@Location, 'All'),' ','') + ']','''','¬')
  53.  
  54. -- ============================================================
  55. -- Create cached table if doesn't already exist
  56. -- ============================================================
  57. IF OBJECT_ID(@CacheTable) IS NULL
  58. BEGIN
  59. IF @BusinessCategory IS NULL AND @BusinessCategory IS NULL
  60. BEGIN
  61. -- Get Businesses
  62. SET @SQL = ' SELECT id
  63. INTO #wmwtmp
  64. FROM dbo.Res_CompanyName
  65. WHERE companyname = ''' + @Business + '''
  66.  
  67. IF (SELECT COUNT(*) FROM #wmwtmp) = 0
  68. BEGIN
  69. INSERT INTO #wmwtmp
  70. SELECT id
  71. FROM Res_CompanyName t
  72. INNER JOIN FREETEXTTABLE ( Res_CompanyName , * , ''FORMSOF(INFLECTION , ' + @Business + ')'') ft ON ( t.id = ft.[Key])
  73. END
  74.  
  75. SELECT TOP 100 CAST(NULL AS INT) AS TotalRows
  76. , ROW_NUMBER() OVER (ORDER BY IsPetoba, BusinessID ASC) AS RowNoID
  77. , BusinessID
  78. , SiteID
  79. , CompanyName
  80. , Address1
  81. , Address2
  82. , Address3
  83. , Town
  84. , County
  85. , Postcode
  86. , Tel
  87. , CompanyDesc
  88. , VoucherID
  89. , Title
  90. , [Description]
  91. , Link
  92. , ExpiryDate
  93. , ImageLink
  94. , Status
  95. , DateStamp
  96. , StartDate
  97. , VoucherSiteID
  98. , Code
  99. , Type
  100. , VoucherTandC
  101. , PCDist
  102. , PCodeTownCounty
  103. , TownCounty
  104. , BusinessCategory
  105. , IsPetoba
  106. INTO dbo.' + @CacheTable + '
  107. FROM dbo.Businesses_Voucher_Flat a
  108. INNER JOIN #wmwtmp b ON a.RecordID = b.ID
  109. WHERE IsDeleted = 0
  110. ' + CASE WHEN @TownCounty IS NOT NULL THEN 'AND TownCounty = ''' + @TownCounty + '''' ELSE '' END + '
  111. ' + CASE WHEN @PCodeTownCounty IS NOT NULL THEN 'AND PCodeTownCounty = ''' + @PCodeTownCounty + '''' ELSE '' END + ''
  112. END
  113. ELSE
  114. BEGIN
  115. SET @SQL = 'SELECT TOP 100 CAST(NULL AS INT) AS TotalRows
  116. , ROW_NUMBER() OVER (ORDER BY IsPetoba, BusinessID ASC) AS RowNoID
  117. , BusinessID
  118. , SiteID
  119. , CompanyName
  120. , Address1
  121. , Address2
  122. , Address3
  123. , Town
  124. , County
  125. , Postcode
  126. , Tel
  127. , CompanyDesc
  128. , VoucherID
  129. , Title
  130. , [Description]
  131. , Link
  132. , ExpiryDate
  133. , ImageLink
  134. , Status
  135. , DateStamp
  136. , StartDate
  137. , VoucherSiteID
  138. , Code
  139. , Type
  140. , VoucherTandC
  141. , PCDist
  142. , PCodeTownCounty
  143. , TownCounty
  144. , BusinessCategory
  145. , IsPetoba
  146. INTO dbo.' + @CacheTable + '
  147. FROM dbo.Businesses_Voucher_Flat a
  148. WHERE IsDeleted = 0
  149. ' + CASE WHEN @BusinessCategory IS NOT NULL THEN 'AND BusinessCategory = ' + CAST(@BusinessCategory AS VarChar) + '' ELSE CASE WHEN @Business IS NOT NULL THEN 'AND CompanyName = ''' + REPLACE(@Business, '''', '''''') + '''' ELSE '' END END + '
  150. ' + CASE WHEN @TownCounty IS NOT NULL THEN 'AND TownCounty = ''' + @TownCounty + '''' ELSE '' END + '
  151. ' + CASE WHEN @PCodeTownCounty IS NOT NULL THEN 'AND PCodeTownCounty = ''' + @PCodeTownCounty + '''' ELSE '' END + ''
  152.  
  153. END
  154.  
  155. SET @SQL = @SQL + ' UPDATE c
  156. SET TotalRows = m.MaxRowNoID
  157. FROM ' + @CacheTable + ' c, (SELECT MAX(RowNoID) AS MaxRowNoID FROM ' + @CacheTable + ') m'
  158. --PRINT @SQL
  159. EXEC (@SQL)
  160. END
  161.  
  162. -- ============================================================
  163. -- Return Results
  164. -- ============================================================
  165. SET @SQL = 'SELECT BusinessID
  166. , SiteID
  167. , CompanyName
  168. , Address1
  169. , Address2
  170. , Address3
  171. , Town
  172. , County
  173. , Postcode
  174. , Tel
  175. , CompanyDesc
  176. , VoucherID
  177. , Title
  178. , [Description]
  179. , Link
  180. , ExpiryDate
  181. , ImageLink
  182. , [Status]
  183. , DateStamp
  184. , StartDate
  185. , VoucherSiteID
  186. , Code
  187. , Type
  188. , VoucherTandC
  189. , IsPetoba
  190. FROM dbo.' + @CacheTable + '
  191. WHERE RowNoID BETWEEN ' + CAST(1 + (@RecordsPerPage*(@PageNumber-1)) AS VARCHAR) + ' AND ' + CAST(@RecordsPerPage*@PageNumber AS VARCHAR) + ''
  192. EXEC (@SQL)
  193.  
  194. /*
  195. SELECT TOP 10 BusinessID
  196. , SiteID
  197. , CompanyName
  198. , Address1
  199. , Address2
  200. , Address3
  201. , Town
  202. , County
  203. , Postcode
  204. , Tel
  205. , CompanyDesc
  206. , VoucherID
  207. , Title
  208. , [Description]
  209. , Link
  210. , ExpiryDate
  211. , ImageLink
  212. , [Status]
  213. , DateStamp
  214. , StartDate
  215. , VoucherSiteID
  216. , Code
  217. , Type
  218. , VoucherTandC
  219. FROM Businesses_Voucher_Flat
  220. */
  221.  
  222. -- Find new Total (Filtered)
  223. SET @SQL = 'SELECT @TotalRows = COUNT(1) FROM ' + @CacheTable + ''
  224. EXEC sp_EXECUTESQL @SQL,N'@TotalRows INT OUTPUT',@TotalRows OUTPUT
  225. SET @TotalRecords = @TotalRows
  226. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement