Как установить более чем максимальный размер символов в NVARCHAR (MAX), sql Server2005 - PullRequest
0 голосов
/ 11 августа 2009

Я использую

объявить @insertsql nvarchar (MAX)

- выше @insertsql для sp_executesql принимает только nvarchar в качестве ввода

set @insertsql = '- я даю здесь более 10000 символов -----'

EXEC sp_executesql @insertsql, N '@ inXMLRequest XML OUTPUT', @inXMLRequest OUTPUT

как вставить более 10000 символов в NVARCHAR (MAX) в sql server2005

Может ли кто-нибудь помочь, пожалуйста

Заранее спасибо

Ответы [ 4 ]

0 голосов
/ 01 апреля 2014

sp_executesql примет NVARCHAR (MAX), который может быть длиннее 4000, только он не может быть назначен всем сразу. Ему нужно присвоить 4000 символов в одном операторе присваивания, а затем добавить, как показано здесь:

declare @strSQL nvarchar(max)
--@strSQL + REPLICATE(' ', 5000)+' ''ERROR!'''
--exec sp_executesql @strSQL 
SET @strSQL = N'SELECT'+ REPLICATE(' ', 3000)
SET @strSQL = @strSQL + REPLICATE(' ', 3000)+' ''This works'''
exec sp_executesql @strSQL
select LEN (@strSQL)
0 голосов
/ 21 августа 2009

Спасибо всем,

я получил ответ

Защищено от непосредственного использования SP_Executesql. Мы выполняем переменную nvarchar

Выше мы готовим переменную @insertsql nvarchar, превышающую 8000 символов, и она передает sp_executesql следующим образом

EXEC sp_executesql @insertsql, N '@ inXMLRequest XML-OUTPUT', @ inXMLRequest OUTPUT

вместо указанного выше запроса заменен на следующий запрос

Exec ('DeClare @inXMLRequest XML SET @inXMLRequest =' ------ свыше 8000 символов --- ')

Наконец мы выполним эту строку nvarchar и выйдем из нее

0 голосов
/ 21 августа 2009

Параметр, который вы используете для запуска команды в sp_executesql (@insertsql в вашем случае) - это NVARCHAR (4000), а не NVARCHAR (MAX), поэтому вы ограничены динамической командой SQL длиной 4000 символов.

Если вам не хватает места в переменной, вам нужно выполнить некоторый перефакторинг кода.

0 голосов
/ 11 августа 2009

Это случилось со мной, когда я использую встроенные операторы SQL вместо хранимых процедур.

Если вы достигли этого потолка, вы можете рассмотреть возможность перехода к сохраненным процедурам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...