Thanks visakh.Query currently looks like this. So you're saying I have to build this up as a string and EXEC it as dynamic sql?CREATE PROCEDURE [dbo].[SearchXXX] @Term nvarchar(25), @start int, @limit int, @sector intASDECLARE @outerlimit intBEGIN SET @outerlimit = @start + @limit SELECT DISTINCT * FROM ( SELECT Row_Number() OVER (ORDER BY ItemNo) AS RowID, count(*) over() as TotalCount, ia.ID, ItemNo, BagSize, Gauge, ra.SectorID, ra.Level1ID, ra.Level2ID, ra.Level3ID, ra.RangeDescription FROM Items ia INNER JOIN RangesItems ria ON ia.ID = ria.ItemID INNER JOIN Ranges ra ON ria.RangeID = ra.ID LEFT OUTER JOIN Level1Categories c1 ON ra.Level1ID = c1.ID LEFT OUTER JOIN Level2Categories c2 ON ra.Level2ID = c2.ID LEFT OUTER JOIN Level3Categories c3 ON ra.Level3ID = c3.ID WHERE ia.ID IN( SELECT DISTINCT i.ID FROM Items i, CONTAINSTABLE(Items, *, @Term) as A WHERE A.[KEY] = i.ID UNION SELECT DISTINCT ri.ItemID FROM Ranges r INNER JOIN RangesItems ri ON r.ID = ri.RangeID, CONTAINSTABLE(Ranges, *, @Term) as A WHERE A.[KEY] = r.ID)) X WHERE (SectorID = @sector OR @sector = 0) AND RowID >= @start AND RowID <= @outerlimit END