Просто измените первую строку:
SELECT 'Select p.ID,Order_of,Field_Name, VALUE, Val from( Select '
на:
SELECT CAST('Select p.ID,Order_of,Field_Name, VALUE, Val from( Select ' AS VARCHAR(MAX))
, потому что при объединении varchar
строк, которые не являются явно максимальными (приводится как максимум или превышает 4000 chars) результаты не преобразуются автоматически в макс.
Например, давайте объединим два 4000 символов + дополнительные символы:
EXEC sp_describe_first_result_set N'SELECT REPLICATE(''A'', 4000) + REPLICATE(''B'', 4000) + ''This will be cut'' AS [X]'
Результат будет переменной типа VARCHAR(8000)
.
Также может потребоваться добавить такое преобразование в остальных утверждениях.