Reputation: 3246
I have written a SQL Server query:
declare @TaxYear VARCHAR(50)
set @TaxYear='13'
declare @BBL VARCHAR(50)
set @BBL=''
declare @Appartment VARCHAR(50)
set @Appartment=''
declare @ResidenceTypeDescription VARCHAR(200)
set @ResidenceTypeDescription=''
declare @SN1 VARCHAR(20)
set @SN1=''
declare @SN2 VARCHAR(20)
set @SN2=''
declare @Status VARCHAR(100)
set @Status='Unassigned'
declare @RowIndex INT
set @RowIndex=1
declare @MaxRows INT
set @MaxRows=25
declare @SortExpression varchar(50)
set @SortExpression='bbl desc'
declare @sql varchar(max)
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = @RowIndex
SET @EndRow = ( @StartRow + @MaxRows ) - 1
set @sql= 'SELECT *
FROM ( SELECT * ,
ROW_NUMBER() OVER ( ORDER BY '+@SortExpression +') AS ROW
FROM vwApplicationList
WHERE TaxYear = '+@TaxYear+'
AND Status = '+@Status+'
AND REPLACE(BBL, ''--'', '''') LIKE ''%' + @BBL
+ '%''
AND COALESCE(UnitOrAppartmentNumber, '''') LIKE ''%'
+ @Appartment + '%''
AND COALESCE(ResidenceTypeDescription, '''') LIKE ''%'
+ @ResidenceTypeDescription + '%''
AND ( COALESCE(SN1, '''') LIKE ''%' + @SN1 + '%''
OR COALESCE(SN2, '''') LIKE ''%' + @SN2
+ '%''
)
) AS NumberedUsers
WHERE ROW BETWEEN '+@StartRow+' AND '+@EndRow
exec (@sql)
When I run this query I get an error:
Upvotes: 0
Views: 252
Reputation: 52241
The problem is at the end of your query where you are trying to concatenate the integer value, you have have convert it to a varchar...
declare @TaxYear VARCHAR(50)
set @TaxYear='13'
declare @BBL VARCHAR(50)
set @BBL=''
declare @Appartment VARCHAR(50)
set @Appartment=''
declare @ResidenceTypeDescription VARCHAR(200)
set @ResidenceTypeDescription=''
declare @SN1 VARCHAR(20)
set @SN1=''
declare @SN2 VARCHAR(20)
set @SN2=''
declare @Status VARCHAR(100)
set @Status='Unassigned'
declare @RowIndex INT
set @RowIndex=1
declare @MaxRows INT
set @MaxRows=25
declare @SortExpression varchar(50)
set @SortExpression='bbl desc'
declare @sql varchar(max)
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = @RowIndex
SET @EndRow = ( @StartRow + @MaxRows ) - 1
set @sql=
'SELECT *
FROM ( SELECT * ,
ROW_NUMBER() OVER ( ORDER BY '+@SortExpression +') AS ROW
FROM vwApplicationList
WHERE TaxYear = '+@TaxYear+'
AND Status = '+@Status+'
AND REPLACE(BBL, ''--'', '''') LIKE ''%' + @BBL
+ '%''
AND COALESCE(UnitOrAppartmentNumber, '''') LIKE ''%'
+ @Appartment + '%''
AND COALESCE(ResidenceTypeDescription, '''') LIKE ''%'
+ @ResidenceTypeDescription + '%''
AND ( COALESCE(SN1, '''') LIKE ''%' + @SN1 + '%''
OR COALESCE(SN2, '''') LIKE ''%' + @SN2
+ '%''
)
) AS NumberedUsers
WHERE ROW BETWEEN '+ Convert(varchar,@StartRow)+' AND '+Convert(varchar,@EndRow)
exec (@sql)
Upvotes: 2
Reputation: 25337
Replace @StartRow
with CAST(@StartRow AS VARCHAR(50))
and @EndRow
with
CAST(@EndRow AS VARCHAR(50))
Upvotes: 0