|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
Здравствуйте! Внутри хранимой процедуры формирую в переменной @query(типа NVARCHAR(MAX)) строку будущего запроса, который потом будет исполняться командой вида: Код: sql 1.
Получаю ошибку исполнения, поскольку не весь запрос помещается в переменную, о чем свидетельствует функция LEN(@query), возвращающая значение 4000. Как же сформировать текст динамического запроса полностью, дорогие форумчане? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 15:32 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
Борис Гаркун, все там нормально формируется, вы где то у себя оперируете с типом nvarchar(4000) Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 15:33 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
Борис Гаркун, на EXEC ограничений нет. Код: sql 1. 2. 3. 4.
Может вы там запрос на терабайт сгенерить решили? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 15:54 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
a_voronin Борис Гаркун, на EXEC ограничений нет. Код: sql 1. 2. 3. 4.
Может вы там запрос на терабайт сгенерить решили? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 16:09 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
a_voronin Борис Гаркун, на EXEC ограничений нет. Неправда ваша. Ограничения есть... в MS SQL 2000. Тредстартер не огласил версию. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 16:12 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
aleks222 a_voronin Борис Гаркун, на EXEC ограничений нет. Неправда ваша. Ограничения есть... в MS SQL 2000. Тредстартер не огласил версию. У ТС NVARCHAR(MAX), т.е. минимум 2005 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 16:13 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
Борис Гаркун, это давно известная проблема. решение: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 16:25 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
valv это давно известная проблема. Никакой проблемы нет, и exec(...) отлично работает со строками больше 4000 (8000) символов. Пример выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 16:30 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
msLex valv это давно известная проблема. Никакой проблемы нет, и exec(...) отлично работает со строками больше 4000 (8000) символов. Пример выше. забавно-с. решение есть, а проблемы нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 16:35 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
Когда собираете @query, в явном виде конвертируйте хотя бы первую часть в nvarchar(max). Как вот тут, например https://bertwagner.com/posts/why-is-my-varcharmax-variable-getting-truncated/ ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 19:01 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
Борис Гаркун, какие ваши доказательства? Пример продемонстрируйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2021, 22:29 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
valv msLex пропущено... Никакой проблемы нет, и exec(...) отлично работает со строками больше 4000 (8000) символов. Пример выше. забавно-с. решение есть, а проблемы нет. Пример выше - это не решение, а демонстрация, как работать правильно с конкатенацией в случае large data type. Это всё давным-давно известно, побочный эффект от конкатенации строковых литералов - скорее всего, в скрипте каждый из них меньше 4000 символов, и результат конкатенации обрезается. Как уже выше писали, в таком случае нужно хотя бы 1 конкатенируемый операнд привести к длинному типу: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Ну, и в документации про такую ситуацию написано вполне однозначно : If the result of the concatenation of strings exceeds the limit of 8,000 bytes, the result is truncated. However, if at least one of the strings concatenated is a large value type, truncation does not occur. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 07:07 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
4es, именно так и сделал. Всем спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 09:23 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
Борис Гаркун 4es, именно так и сделал. Всем спасибо! Как "так" ? Подробнее напишите, чтобы будущие поколения поняли, когда будут читать форум в 2030 году, например ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 09:26 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
Ролг Хупин Борис Гаркун 4es, именно так и сделал. Всем спасибо! Как "так" ? Подробнее напишите, чтобы будущие поколения поняли, когда будут читать форум в 2030 году, например Код: sql 1.
Тогда результат сложения получится типа NVARCHAR(MAX) без усечения, ибо перед сложением все слагаемые будут приведены к этому типу. Правильнее, наверно, делать каждое слагаемые типа NVARCHAR(MAX) сразу при объявлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 12:55 |
|
Почему переменная ограничивается 4000 символами при типе NVARCHAR(MAX)?
|
|||
---|---|---|---|
#18+
valv msLex пропущено... Никакой проблемы нет, и exec(...) отлично работает со строками больше 4000 (8000) символов. Пример выше. забавно-с. решение есть, а проблемы нет. Наличие решения совсем не говорит о наличие проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2021, 13:08 |
|
|
start [/forum/topic.php?fid=46&fpage=14&tid=1684272]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
others: | 244ms |
total: | 396ms |
0 / 0 |