このように変数を動的文字列に渡すと、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