У меня есть функция C, которая принимает строку с именем 'buffer' и анализирует ее, она сопоставляет ключевые слова и использует их для присвоения значений в структуре.
Однако некоторые ключевые слова я хочу полностью игнорировать.
Эта программа анализирует файлы VCard (.vcf, виртуальные визитки).
Вот пример буфера строки, который может предоставить:
FN;CHARSET=UTF-8:David Celery
FN - это ключевое слово, которое меня интересует, а Дэвид Селери - это значение, связанное с FN.
Однако CHARSET = UTF-8 - это то, что меня совсем не волнует.
Мой вопрос: Это действительно длинный запрос, и мне приходится писать его динамически, поэтому я создаю переменную с именем @Query и делаю ее типа NVARCHAR (MAX). Итак, я ...
Итак, я пишу хранимую процедуру в 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)
] работает?