Jag känner mig tvungen att råda dig om att om du överför variabler till dynamiska strängar som denna gör du öppen för SQL-injektioner. Detta är en dålig praxis, och allmänt sett illa om det inte är mycket strikt kontrollerat.
Som sagt...
Ändra din @MySQL från varchar till nvarchar.
Försök sedan att ändra detta:
set @MySQL = 'select count(*) from ' [email protected] + ' where ' + @MyWhere
set @SQL_Count = @MySQL
set @recordCount = convert(int, @SQL_Count ) -- <<--this is the error
Till detta:
set @MySQL = 'select @recordCount=count(2) from ' + @MyTable + ' where ' + @MyWhere
exec sp_execute @MySQL, N'@recordCount int OUTPUT', @[email protected] OUTPUT