Czuję się zobowiązany doradzić, że przekazywanie zmiennych do dynamicznych ciągów, takie jak ten, naraża cię na wstrzykiwanie SQL. Jest to zła praktyka i generalnie jest źle widziana, chyba że jest bardzo ściśle kontrolowana.
To powiedziawszy...
Zmień swój @MySQL z varchar na nvarchar.
Następnie spróbuj to zmienić:
set @MySQL = 'select count(*) from ' [email protected] + ' where ' + @MyWhere
set @SQL_Count = @MySQL
set @recordCount = convert(int, @SQL_Count ) -- <<--this is the error
Do tego:
set @MySQL = 'select @recordCount=count(2) from ' + @MyTable + ' where ' + @MyWhere
exec sp_execute @MySQL, N'@recordCount int OUTPUT', @[email protected] OUTPUT