Rasadul Alam Rashed Ответов: 3

Как использовать строковую переменную SQL размером более 4000 символов в хранимой процедуре SQL server 2008?


Я использую SQL server 2008.В хранимой процедуре (SP) у меня есть переменные строкового типа. Теперь я хочу сохранить некоторое строковое значение типа в этой переменной. Но если размер строки меньше 4000, то это прекрасно работает. Но когда размер превышает 4000, то это не работает.

Объявить @SQLString NVARCHAR(MAX)

SET @SQLString='Some SQL SELECT statemtnt и его размер (len) более 4000... Предположим, что его размер равен 10000 '

EXECUTE (@SQLString)
Если я использую
Объявить @SQLString varchar(10000)
Затем я обнаружил некоторую ошибку типа - размер (10000), заданный типу 'varchar', превышает максимально допустимый для любого типа данных (8000).


Может ли кто-нибудь помочь мне преодолеть эту проблему.

Заранее спасибо
Сыпь

3 Ответов

Рейтинг:
23

Abhinav S

От Часто задаваемые вопросы - SQL Server 2005 - VARCHAR(MAX), NVARCHAR(MAX), VARBINARY(MAX)[^] ->

"Чтобы создать столбец типа данных VARCHAR с максимальным количеством символов 10 000, вы объявляете столбец как тип данных VARCHAR(MAX) и просто добавляете контрольное ограничение к столбцу, проверяя длину столбца и убеждаясь, что она меньше или равна 10 000 символов. Чтобы проиллюстрировать это, вот как это будет выглядеть:

CREATE TABLE [dbo].[VarChar10000] ( [VarChar10000] VARCHAR(MAX) )
GO

ALTER TABLE [dbo].[VarChar10000] 
    ADD CONSTRAINT [MaxLength10000]
    CHECK (DATALENGTH([VarChar10000]) <= 10000)
GO"


[no name]

Но я буду использовать его в хранимой процедуре sql для объявления переменных. Не в создании таблицы..

Monjurul Habib

5!

Abhinav S

Спасибо тебе, Монжурул.

[no name]

За что же??

Рейтинг:
2

Member 14566715

You Could Try

Declare @SQL as nvarchar(Max)
	,@SQL2 as nvarchar(Max)

-- Just Sample
-- each variable max 4000 character, so be wise in splitting your syntaxs

Set @SQL  = 'Select * '
Set @SQL2 = 'From table A'

EXEC (@SQL+@SQL2)


Note if your dynamic string lenght more than > 8000 character you should split into 3 variables'

this should works, because i was have same problem


Рейтинг:
0

AshishChaudha

лучше использовать

DECLARE @SQLString text



Дайте мне знать, если это поможет


С уважением
Ашиш