|
|
|
Выполнение длинных запросов
|
|||
|---|---|---|---|
|
#18+
Проблема заключается в превышении ограничиния в 8000 символов при составлении строки динамического сиквела. Разбивать на несколько переменных и затем склеивать в EXECUTE (@Sql1+@Sql2+...) проблематично (что можно было - разделил), так как основная часть запрос генерируется в цикле и число итераций его заранее неизвестно. Теоретически sp_executesql работет с ntext, но работать с ним в ХП вроде как нельзя. Или все-таки как-то можно? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 22:00:28 |
|
||
|
Выполнение длинных запросов
|
|||
|---|---|---|---|
|
#18+
Можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 22:28:22 |
|
||
|
Выполнение длинных запросов
|
|||
|---|---|---|---|
|
#18+
И как? Хотелось бы все-таки не через поле в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2002, 22:41:00 |
|
||
|
Выполнение длинных запросов
|
|||
|---|---|---|---|
|
#18+
Можно записать скрипт во внешний текстовый файл и затем выполнить с помощью osql/isql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2002, 23:09:13 |
|
||
|
Выполнение длинных запросов
|
|||
|---|---|---|---|
|
#18+
У меня совершенно аналогичная проблема. Запись в файл не устраивает. Упоминаемый здесь метод работы с ntext действительно должен работать теоретичеки, но как реализовать его практически? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2002, 16:57:11 |
|
||
|
Выполнение длинных запросов
|
|||
|---|---|---|---|
|
#18+
я вот почитал в BOL, там написано, что текст запроса должен обязательно конвертироваться в ntext, и кажется нет ни слова о том, что этот параметр м.б. сам по себе ntext. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2002, 17:24:33 |
|
||
|
Выполнение длинных запросов
|
|||
|---|---|---|---|
|
#18+
@string_variable Is the name of a local variable. @string_variable can be of char, varchar, nchar, or nvarchar data type with a maximum value of the server's available memory. If the string is greater than 4,000 characters, concatenate multiple local variables to use for the EXECUTE string. For more information about system-supplied SQL Server data types, see Data Types. Про text ни слова. Боюсь EXECUTE (@Sql1+@Sql2+...) - единственный выход. Хотя если вы в состоянии загнать строку данамического SQL в ntext, то какие проблемы её оттуда вытащить в массив из, скажем 10 переменных типа nvarchar(4000) и затем запустить EXECUTE (@Sql1+@Sql2+...@Sql10), тогда максимальная длинна запроса будет 40К ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2002, 17:54:38 |
|
||
|
Выполнение длинных запросов
|
|||
|---|---|---|---|
|
#18+
Метод хоть и нельзя назвать удобным, но он работает (лично мне казалось, что при сложении varchar переменных обрезание до 8000 тоже должно иметь место, ан нет). Полагаю, что других способов и не найти. Спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2002, 17:40:51 |
|
||
|
Выполнение длинных запросов
|
|||
|---|---|---|---|
|
#18+
Я сам задавал аналогичный вопрос где-то там далеко внизу. Лично я выкрутился на EXECUTE (@Sql1+@Sql2+...+@Sql10). А что, 80'000 байт тоже мало? Сколько же времени занимает компиляция этих запросов? Сэр, вы попробуйте глазами прочитать запрос такого размера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2002, 17:47:13 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32056093&tid=1819767]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 376ms |

| 0 / 0 |
