Question : Syntax error converting the varchar value

The SP below has a syntex error and for the life off me I can not fid it. Any help is greatly appreciated.

CREATE PROCEDURE RunXML_CreateRacksOrderedByRows @devicename char(50), @minrange int , @maxrange as int AS
DECLARE @SQL VARCHAR(8000)
DECLARE @Var VARCHAR(50)
SET NOCOUNT ON


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TempRackInfoOrderedByRow]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TempRackInfoOrderedByRow]

SET @Var = "'"


IF SUBSTRING(RTrim(@devicename) , 1, 6) = 'Master'

SET @SQL =
'SELECT     TOP 100 PERCENT dbo.vRackPosWithPivot .Shelf, dbo.vRackPosWithPivot .Row,
     MIN(dbo.vRackPosWithPivot .[Position]) AS [Position],
     SUM(dbo.vTubeCountOfRacks.TubeCount) AS TubeCountByRow,
     COUNT(dbo.vTubeCountOfRacks.TubeCount) AS RacksPerRow,
     SUM(Case WHEN dbo.vTubeCountOfRacks.TubeCount >=   RTrim(convert(varchar(4), ' +  @minrange + ' )  And dbo.vTubeCountOfRacks.TubeCount  <= RTrim(convert(varchar(4), ' +  @maxrange + ' )  then POWER(2,dbo.vRackPosWithPivot .[Column]-1) else 0 end) AS CountBit,
     SUM(CASE WHEN dbo.vTubeCountOfRacks.TubeCount  >=  RTrim(convert(varchar(4), ' +  @minrange + ' )  And dbo.vTubeCountOfRacks.TubeCount  <= RTrim(convert(varchar(4), ' +  @maxrange + ' )   THEN 1 ELSE 0 END) AS CountInRange
INTO TempRackInfoOrderedByRow

FROM         dbo.vRackPosWithPivot  
INNER JOIN dbo.vTubeCountOfRacks ON dbo.vRackPosWithPivot .RackInfoID = dbo.vTubeCountOfRacks.RackInfoID
GROUP BY dbo.vRackPosWithPivot .Shelf, dbo.vRackPosWithPivot .Row
HAVING (SUM(Case WHEN dbo.vTubeCountOfRacks.TubeCount >= RTrim(convert(varchar(4), ' +  @minrange + ' )  And dbo.vTubeCountOfRacks.TubeCount  <= RTrim(convert(varchar(4), ' +  @maxrange + ' )   then POWER(2,dbo.vRackPosWithPivot .[Column]-1) else 0 end)  > 0)
ORDER BY SUM(Case WHEN dbo.vTubeCountOfRacks.TubeCount >= RTrim(convert(varchar(4), ' +  @minrange + ' )  And dbo.vTubeCountOfRacks.TubeCount  <= RTrim(convert(varchar(4), ' +  @maxrange + ' ) then 1 else 0 end) DESC, SUM(dbo.vTubeCountOfRacks.TubeCount),   dbo.vRackPosWithPivot .Shelf'
                         
ELSE
                       
SET @SQL =
'SELECT     TOP 100 PERCENT dbo.vRackPosWithPivot.DeviceName, dbo.vRackPosWithPivot.Shelf, dbo.vRackPosWithPivot.Row,
        MIN(dbo.vRackPosWithPivot.[Position]) AS [Position],
      SUM(dbo.vTubeCountOfRacks.TubeCount) AS TubeCountByRow,
        COUNT(dbo.vTubeCountOfRacks.TubeCount) AS RacksPerRow,
     SUM(Case WHEN dbo.vTubeCountOfRacks.TubeCount >= RTrim(convert(varchar(4), ' +  @minrange + ' )   And dbo.vTubeCountOfRacks.TubeCount  <=RTrim(convert(varchar(4), ' +  @maxrange + ' )  then POWER(2,dbo.vRackPosWithPivot .[Column]-1) else 0 end) AS CountBit,
     SUM(CASE WHEN dbo.vTubeCountOfRacks.TubeCount  >= RTrim(convert(varchar(4), ' +  @minrange + ' )  And dbo.vTubeCountOfRacks.TubeCount  <= RTrim(convert(varchar(4), ' +  @maxrange + ' )  THEN 1 ELSE 0 END) AS CountInRange
INTO TempRackInfoOrderedByRow

FROM         dbo.vRackPosWithPivot INNER JOIN
                      dbo.vTubeCountOfRacks ON dbo.vRackPosWithPivot.RackInfoID = dbo.vTubeCountOfRacks.RackInfoID
GROUP BY dbo.vRackPosWithPivot.DeviceName, dbo.vRackPosWithPivot.Shelf, dbo.vRackPosWithPivot.Row
HAVING      (dbo.vRackPosWithPivot.DeviceName  = ' +  @Var + RTRIM(@devicename)  + @Var +  ' ) AND
(SUM(Case WHEN dbo.vTubeCountOfRacks.TubeCount >= RTrim(convert(varchar(4), ' +  @minrange + ' )   And dbo.vTubeCountOfRacks.TubeCount  <= RTrim(convert(varchar(4), ' +  @maxrange + ' ) then POWER(2,dbo.vRackPosWithPivot .[Column]-1) else 0 end)  > 0)
ORDER BY SUM(Case WHEN dbo.vTubeCountOfRacks.TubeCount >= RTrim(convert(varchar(4), ' +  @minrange + ' )  And dbo.vTubeCountOfRacks.TubeCount  <= RTrim(convert(varchar(4), ' +  @maxrange + ' )  then 1 else 0 end) DESC, SUM(dbo.vTubeCountOfRacks.TubeCount),   dbo.vRackPosWithPivot .Shelf'

PRINT @SQL
EXECUTE (@SQL)
SET NOCOUNT OFF
GO

Answer : Syntax error converting the varchar value

and post all error that you got  please
Random Solutions  
 
programming4us programming4us