В настоящее время у меня есть функция для получения списка столбцов из 1 таблицы с атрибутом detail. И, конечно же, есть несколько таблиц с большим количеством столбцов. Таким образом, выход будет содержать более 10.000 символов.Почему переменная с nvarchar (max) работает некорректно
Здесь я проверяю так:
declare @aa nvarchar(max)
set @aa = dbo.fnGetColumnList('Table_Name')
print @aa
Результат всегда имеет около 4000 символов. Похоже, что SQL усекала его.
Что я знаю, когда мы объявляем nvarchar (max), SQL поддерживает до 2^32-1 (2 ГБ) для этой строки. Но почему у него всего около 4000 символов?
Когда я выполняю так:
select dbo.fnGetColumnList('Table_Name')
результат является правильным.
А вот код функции:
-- get column list from table Mapping
ALTER FUNCTION [dbo].[fnGetColumnList] (@tblName varchar (30))
RETURNS nvarchar(max)
AS
BEGIN
Declare @sql nvarchar(max)
set @sql = ''
SELECT @sql = @sql + case
when CHARINDEX('char', LOWER([DBType])) > 0 then ', ['+[DBColumn]+']' + ' ['+[DBType]+']' + ' ('+convert(varchar(10),[Length])+') NULL' + CHAR(13)
when CHARINDEX('char', LOWER([DBType])) > 0 then ', ['+[DBColumn]+']' + ' ['+[DBType]+']' + ' NULL' + CHAR(13)
ELSE ', ['+[DBColumn]+']' + ' ['+[DBType]+']' + ' NULL' + CHAR(13)
end FROM dbo.Mapping WHERE [DBTable] = @tblName
return @sql
END
Пожалуйста, заранее.
Можете ли вы опубликовать код функции? – steoleary
Пожалуйста, напишите содержимое 'fnGetColumnList' –
Я добавил код функции к вопросу. Пожалуйста ознакомтесь. Благодарю. –