|
|
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
|
|
|
|
|