Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / временные таблицы / 5 сообщений из 5, страница 1 из 1
24.11.2008, 12:50
    #35671419
minya13_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
временные таблицы
Есть конструкция с использованием временной таблицы в RS2005, я её использую в прям в датасете, сразу говорю не могу использовать хранимую процедуру, т.к. там используется in и он мне там очень нужен. Делаю матричный отчет с разбивкой по месяцам, поэтому использую цикл.
Код: plaintext
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.
30.
31.
32.
33.
declare @fdate datetime, @ldate datetime, @n int
declare @tbl table (месяц nvarchar( 20 ), Тип nvarchar( 50 ), Артикул nvarchar( 20 ), otgsht int, otgves float)
set @n= 0 
while @n<=datediff(m,@Начало_периода, @Конец_периода)
begin

if @n= 0 
       begin
           set @fdate=@Начало_периода
           set @ldate=dateadd(m, 1 ,dateadd(day, 1 -day(dateadd(m,@n,@Начало_периода)),dateadd(m,@n,@Начало_периода)))- 1 
       end 
     else 
         if @n=datediff(m,@Начало_периода, @Конец_периода)
            begin
              set @fdate=dateadd(day, 1 -day(dateadd(m,@n,@Начало_периода)),dateadd(m,@n,@Начало_периода))
              set @ldate=@Конец_периода
            end
           else
           begin
              set @fdate=dateadd(day, 1 -day(dateadd(m,@n,@Начало_периода)),dateadd(m,@n,@Начало_периода))
              set @ldate=dateadd(m, 1 ,dateadd(day, 1 -day(dateadd(m,@n,@Начало_периода)),dateadd(m,@n,@Начало_периода)))- 1 
           end  
insert into @tbl
    
select ............
from ............

set @n=@n+ 1 
end

select *
from @tbl
order by Месяц, Тип, Артикул
Он этот запрос выполняет примерно 3 минуты, потом Выдает ошибку:
Код: plaintext
1.
2.
3.
4.
An error occurred during local report processing
An error has occurred during report processing
Query execution failed for data set 'Mainex'
String or binary data would be truncated
...
Рейтинг: 0 / 0
24.11.2008, 13:18
    #35671525
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
временные таблицы
То что в запросе используется IN никоим образом не означает, что
использовать хранимую процедуру нельзя. Можно написать (или взять с этого
форума) функцию, которая сможет вернуть таблицу со значениями выделенными из
строки. А RS multi - value параметры передает как строку, разделяя значения
запятой.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
24.11.2008, 13:30
    #35671567
minya13_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
временные таблицы
shady
То что в запросе используется IN никоим образом не означает, что
использовать хранимую процедуру нельзя. Можно написать (или взять с этого
форума) функцию, которая сможет вернуть таблицу со значениями выделенными из
строки. А RS multi - value параметры передает как строку, разделяя значения
запятой.


Извините, но я е совсем понял, какую функцию мне нужно взять из форума?
...
Рейтинг: 0 / 0
24.11.2008, 13:56
    #35671629
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
временные таблицы
http://www.sql.ru/subscribe/2003/146.shtml
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
25.11.2008, 13:25
    #35674005
Ghola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
временные таблицы
Угу, или вот: http://www.sql.ru/articles/mssql/03060701ArraysAndListsInSQLServer.shtml#iter-list-of-integers Функция iter_intlist_to_table. Только символ-разделитель поменяйте. И если у Вас SQL2005 и старше - замените входной параметр на nvarchar(max)

Кстати рекомендую использовать в датасете не хранимую процедуру, а функцию. Правда в функциях нельзя использовать временные таблицы. Но в Вашем коде как раз используется не временная таблица, а табличная переменная. Так что всё в порядке.
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / временные таблицы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]