Итак, я пишу хранимую процедуру в MS SQL Server 2008. Это очень длинный запрос, и я должен писать его динамически, поэтому я создаю переменную с именем @Query
и создаю ее типа NVARCHAR(MAX)
. Теперь мне сказали, что в современных версиях SQL Server NVARCHAR(MAX)
может содержать нелепый объем данных, что превышает максимальный максимум 4000 символов. Тем не менее, @Query
по-прежнему усекается до 4000 символов, когда я пытаюсь распечатать его.
DECLARE @Query NVARCHAR(max);
SET @Query = 'SELECT...' -- some of the query gets set here
SET @Query = @Query + '...' -- more query gets added on, etc.
-- later on...
PRINT LEN(@Query) -- Prints out 4273, which is correct as far as I can tell
PRINT @Query -- Truncates value to 4000 characters
EXEC sp_executesql @Query -- totally crashes due to malformed (truncated) query
Я делаю что-то неправильно, или я совершенно не прав о том, как работает NVARCHAR(MAX)
?