matthewking
Programmer
This sproc is supposed to build a query dynamically (in order to add filtering) then page records, it worked fine until I added the employeesTo filter, now I get this error
=============================================
Server: Msg 245, Level 16, State 1, Procedure sp_getAllRecords, Line 105
Syntax error converting the varchar value '
SELECT
ID
, Title
, FName
, Surname
, Position
, Email
, Organisation
, Phone
, City
, Industry
, County
, NoEmp
FROM
SME
WHERE NoEmp <= ' to a column of data type int.
=====================================================
And here is the sproc. (Ive clearly marked out where the error is with ############)
CREATE PROCEDURE sp_getAllRecords
(
@StartPosition Integer = 0
, @ResultSize Integer = 20
, @City Varchar(250) = NULL
, @County Varchar(250) = NULL
, @Company Varchar(250) = NULL
, @EmployeesFrom Integer = NULL
, @EmployeesTo Integer = NULL
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @query varchar(2500)
SET @query =
'
SELECT
ID
, Title
, FName
, Surname
, Position
, Email
, Organisation
, Phone
, City
, Industry
, County
, NoEmp
FROM
SME
'
DECLARE @filterOn int
SET @filterOn = 0
-- We use the filterOn variable to determine if any filter querys have been added, this allows us to use the correct, where or and in the query.
-- ### CITY FILTER ###
IF (@City != NULL)
BEGIN
IF (@filterOn = 1)
BEGIN
SET @query = @query + ' AND City = ''' + @City + ''''
END
IF (@filterOn != 1)
BEGIN
SET @query = @query + ' WHERE City = ''' + @City + ''''
SET @filterOn = 1
END
END
-- #######################################################
-- #######################################################
-- ### EMPLOYEES TO FILTER ### THIS IS WHERE THE ERROR IS
IF (@EmployeesTo != NULL)
BEGIN
IF (@filterOn = 1)
BEGIN
SET @query = @query + ' AND NoEmp <= ' + @EmployeesTo
END
IF (@filterOn != 1)
BEGIN
SET @query = @query + ' WHERE NoEmp <= ' + @EmployeesTo
SET @filterOn = 1
END
END
... extracted some code for paging ...
EXEC (@query)
SET NOCOUNT OFF
END
GO
===============
Any help would be greatly appreciated, thanks in advance.
Matthew
=============================================
Server: Msg 245, Level 16, State 1, Procedure sp_getAllRecords, Line 105
Syntax error converting the varchar value '
SELECT
ID
, Title
, FName
, Surname
, Position
, Organisation
, Phone
, City
, Industry
, County
, NoEmp
FROM
SME
WHERE NoEmp <= ' to a column of data type int.
=====================================================
And here is the sproc. (Ive clearly marked out where the error is with ############)
CREATE PROCEDURE sp_getAllRecords
(
@StartPosition Integer = 0
, @ResultSize Integer = 20
, @City Varchar(250) = NULL
, @County Varchar(250) = NULL
, @Company Varchar(250) = NULL
, @EmployeesFrom Integer = NULL
, @EmployeesTo Integer = NULL
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @query varchar(2500)
SET @query =
'
SELECT
ID
, Title
, FName
, Surname
, Position
, Organisation
, Phone
, City
, Industry
, County
, NoEmp
FROM
SME
'
DECLARE @filterOn int
SET @filterOn = 0
-- We use the filterOn variable to determine if any filter querys have been added, this allows us to use the correct, where or and in the query.
-- ### CITY FILTER ###
IF (@City != NULL)
BEGIN
IF (@filterOn = 1)
BEGIN
SET @query = @query + ' AND City = ''' + @City + ''''
END
IF (@filterOn != 1)
BEGIN
SET @query = @query + ' WHERE City = ''' + @City + ''''
SET @filterOn = 1
END
END
-- #######################################################
-- #######################################################
-- ### EMPLOYEES TO FILTER ### THIS IS WHERE THE ERROR IS
IF (@EmployeesTo != NULL)
BEGIN
IF (@filterOn = 1)
BEGIN
SET @query = @query + ' AND NoEmp <= ' + @EmployeesTo
END
IF (@filterOn != 1)
BEGIN
SET @query = @query + ' WHERE NoEmp <= ' + @EmployeesTo
SET @filterOn = 1
END
END
... extracted some code for paging ...
EXEC (@query)
SET NOCOUNT OFF
END
GO
===============
Any help would be greatly appreciated, thanks in advance.
Matthew