Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 Datatype error

Author  Topic 

helixpoint
Constraint Violating Yak Guru

291 Posts

Posted - 2008-05-23 : 13:51:07
Here a4e the values I am passing in
articleID = 17
Keywords = car|boat
categoriesRemove = 1,4,14


ALTER PROCEDURE [dbo].[GetArticlesByKeywords]
@articleID int,
@Keywords VARCHAR(MAX),
@categoriesRemove nvarchar(100)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

declare @MySQLPart varchar(4000)

SET @MYSQLPART = 'SELECT DISTINCT articleKeywords.articleID,
articles.articleTitle,
articles.articleSummary
FROM articleKeywords
LEFT OUTER JOIN articles
ON articleKeywords.articleID = articles.articleID
WHERE (articleKeywords.articleKeyword IN (SELECT data
FROM dbo.FUNCTION_STRING_TO_TABLE (''' + @Keywords + ''',''|'' ) AS function_string_to_table_1))
AND (articleKeywords.articleID <> ' + @articleID + ')
AND (NOT (articles.categoryID IN (' + @categoriesRemove + ')))'
EXEC (@MYSQLPART)
END




************ERROR*********************

Conversion failed when converting the varchar value 'SELECT DISTINCT articleKeywords.articleID,
articles.articleTitle,
articles.articleSummary
FROM articleKeywords
LEFT OUTER JOIN articles
ON articleKeywords.articleID = articles.articleID
WHERE (articleKeywords.articleKeyword IN (SELECT data
FROM dbo.FUNCTION_STRING_TO_TABLE ('car|boat|van','|' ) AS function_string_to_table_1))
AND (articleKeywords.articleID <> ' to data type int.

visakh16
Very Important crosS Applying yaK Herder

52326 Posts

Posted - 2008-05-23 : 13:56:44
Change like this. This error is because you're trying to concatenate an integer field to string

ALTER PROCEDURE [dbo].[GetArticlesByKeywords] 
@articleID int,
@Keywords VARCHAR(MAX),
@categoriesRemove nvarchar(100)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

declare @MySQLPart varchar(4000)

SET @MYSQLPART = 'SELECT DISTINCT articleKeywords.articleID,
articles.articleTitle,
articles.articleSummary
FROM articleKeywords
LEFT OUTER JOIN articles
ON articleKeywords.articleID = articles.articleID
WHERE (articleKeywords.articleKeyword IN (SELECT data
FROM dbo.FUNCTION_STRING_TO_TABLE (''' + @Keywords + ''',''|'' ) AS function_string_to_table_1))
AND (articleKeywords.articleID <> ' + CAST(@articleID AS varchar(10)) + ')
AND (NOT (articles.categoryID IN (' + @categoriesRemove + ')))'
EXEC (@MYSQLPART)
END
Go to Top of Page

tkizer
Almighty SQL Goddess

38200 Posts

Posted - 2008-05-23 : 13:57:07
You need to convert the @articleID to varchar while building your @MYSQLPART string:
@articleID --> CONVERT(varchar(5), @articleID)

Tara Kizer
Microsoft MVP for Windows Server System - SQL Server
http://weblogs.sqlteam.com/tarad/

Database maintenance routines:
http://weblogs.sqlteam.com/tarad/archive/2004/07/02/1705.aspx
Go to Top of Page
   

- Advertisement -