Во время вчерашнего испытания я узнал, что вы не можете передать этот запрос в EXEC ():
@SQL = @SQL + 'WHERE ID = ' + @SomeID
EXCEC(@SQL)
Где @SomeID - INT, а @SQL - NVARCHAR. Это будет жаловаться на невозможность конвертировать NVARCHAR обратно в INT во время выполнения.
Я понял, что ты должен сделать это как
@SQL = @SQL + 'WHERE ID = ' + CONVERT(NVARCHAR(20), @SomeID)
Что я не понял, так почему? Почему SQL Server не понимает INT, когда просто +: вписывается в NVARCHAR? Я предполагаю, что это как-то связано с наборами символов.
EDIT: исправлены опечатки (пропущено несколько +: s).