![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ОЧЕНЬ БОЛЬШОЙ ЗАПРОС [D6, MSSQL]
AndrewK © (2003-12-25 13:37:00)
Доброго времени суток, господа.
Подскажите, пожалуйста, как на стороне сервера можно сгенерировать SQL запрос общей длиной более 8000 символов и выполнить его.
Пока у меня в наличии есть только вот что:
declare @SQL varchar(8000)
select @SQL = .. <Здесь в цикле я создаю тело запроса> ..
Exec (@SQL)
До 8000 символов все работает, выше - соответственно нет.
declare @SQL text - нельзя, так как его нельзя передать в Exec.
Может кто что посоветует?
PS. На вопрос зачем такой большой скажу сразу - злые пользователи хотят длинный и красивый отчет в Excele. Делать его динамически в нем что-то не хочется, на стороне клиента с дальнейшей выгрузкой тоже желания нет. К тому-же запрос получается хоть и длинный, но достаточно быстрый - проверял вручную через QA.
Ega23 (2003-12-25 15:38:00) [1]
Всё правильно. Это у меня html-файл генерился. Для exec"а не пойдёт.
AndrewK (2003-12-25 15:15:00) [2]
Спасибо всем.
Помогло вот так:
declare @SQL1 varchar(8000), @SQL2 varchar(8000), ...
set @SQL1 = ...
set @SQL2 = ...
...
Exec (@SQL1 + @SQL2 + ...)
just me (2003-12-25 14:15:00) [3]
> Ega23 © (25.12.03 13:56)
не получится, Exec требует параметр типов varchar, nchar, or nvarchar
но можно так:
declare @SQL1 varchar(8000), @SQL2 varchar(8000), ...
set @SQL1 = ...
set @SQL2 = ...
...
Exec (@SQL1 + @SQL2 + ...)
Ega23 (2003-12-25 13:56:00) [4]
Попробуй воспользоваться не varchar(8000) а ntext, и с помощью updatetext его менять
Sandman25 (2003-12-25 13:42:00) [5]
По существу ответ не знаю. Но могу предложить написать несколько View и извлекать данные из них. За счет этого можно будет уменьшить длину запроса.
ZrenBy (2003-12-25 13:41:00) [6]http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=10843