Я могу использовать следующий код для крошечных маленьких запросов:
DECLARE @sql VARCHAR(8000)
SET @sql = 'SELECT * FROM myTable'
Exec @sql
Вышеприведенный метод очень полезен для поддержки больших объемов кода, особенно когда нам нужно внести изменения один раз и отразить их повсюду.
Моя проблема заключается в том, что мой запрос (это всего лишь один запрос), который я хочу передать в переменную @sql, использует более 25 табличных объединений, некоторые из них по временным табличным переменным, включают в себя сложные операции и, следовательно, его длина превышает 8000 символов.,
Я хотел использовать тип данных TEXT для хранения этого запроса, но MSDN показывает предупреждающее сообщение о том, что Microsoft планирует удалить типы данных Text, NText и Image из своих следующих версий. Я хочу, чтобы мой код работал в будущем.
Я думал о сохранении этого запроса в отдельном файле, но, поскольку он использует объединения переменных таблицы и других параметров, специфичных для процедуры, я сомневаюсь, что это возможно.
Пожалуйста, скажите мне метод, чтобы сохранить большой запрос в переменной и выполнить его несколько раз в процедуре.