Чувствам се длъжен да ви посъветвам, че предаването на променливи в динамични низове като този ви оставя отворени за SQL инжекции. Това е лоша практика и обикновено се приема с недоволство, освен ако не е много строго контролирано.
Това каза...
Променете своя @MySQL от varchar на nvarchar.
След това опитайте да промените това:
set @MySQL = 'select count(*) from ' [email protected] + ' where ' + @MyWhere
set @SQL_Count = @MySQL
set @recordCount = convert(int, @SQL_Count ) -- <<--this is the error
Към това:
set @MySQL = 'select @recordCount=count(2) from ' + @MyTable + ' where ' + @MyWhere
exec sp_execute @MySQL, N'@recordCount int OUTPUT', @[email protected] OUTPUT