powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
10 сообщений из 10, страница 1 из 1
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34305962
Caponid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в QA результат есть.
при запуске запроса через ADO возвращает пустой объект.

запрос вида

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare @list table (l_id int)
insert into @list
  select flag_id from Flag where flag_group =  1 

select ss.s_id, sum(ss.qty) 
  from (
    select pro.pro_id as s_id, pro.pro_qty as qty 
      from pro
        where pro.pro_flag in (select l_id from @list)
   ) as ss
group by ss.s_id

в результате такого запроса после исполнения
Код: plaintext
1.
 set RS = Cmd.Execute
получаем RS = Nothing.
...
Рейтинг: 0 / 0
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34306016
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте в процедуру SET NOCOUNT ON
...
Рейтинг: 0 / 0
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34306029
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько лет, и все те же грабли
...
Рейтинг: 0 / 0
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34306148
Caponid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkiades
Добавьте в процедуру SET NOCOUNT ON

Это не процедура, это запрос :)

Попробовал переписать хранимкой (NOCOUNT ON в хранимках всегда включаю)
конструкция не работала до тех пор, пока выборку из выборки не заменил временной таблицей.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
insert into #temp_res
  select pro.pro_id , pro.pro_qty 
    from pro
      where pro.pro_flag in (select l_id from @list)

select s_id, sum(qty)
  from #temp_res
group by s_id
Вопрос закрыт :)
Спасибо всем кто отозвался
...
Рейтинг: 0 / 0
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34306166
Caponid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДуракСколько лет, и все те же грабли
ну у меня опыт не лет.. а несколько месяцев (все с нуля)
...
Рейтинг: 0 / 0
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34306827
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пойму. Зачем вам временная таблица?
Если задача решается линейно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select ss.s_id, sum(ss.qty) 
  from (
    select pro.pro_id as s_id, pro.pro_qty as qty 
      from pro inner join flag
	on pro.pro_flag = flag_id
	where flag.flag_group =  1 
   ) as ss
group by ss.s_id
...
Рейтинг: 0 / 0
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34306884
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял как раз влиоженный запрос и вызывает появление левого счетчика. Т.е. в хранинке это лечится а если запросом но нет.


Magnus
...
Рейтинг: 0 / 0
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34307057
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Caponid-а задача тривиальная:
Взять общую сумму по каждому s_id
Выборку сделать для тех записей которые ссылаются на одну из записей в справочнике Flag имеющую flag_group=1.
Нужна ли здесь временная таблица?
...
Рейтинг: 0 / 0
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34307259
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно нет. Я на запрос вообще не смотрел сначала :).


Magnus
...
Рейтинг: 0 / 0
Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
    #34385511
Caponid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WorobjoffНе пойму. Зачем вам временная таблица?
Если задача решается линейно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select ss.s_id, sum(ss.qty) 
  from (
    select pro.pro_id as s_id, pro.pro_qty as qty 
      from pro inner join flag
	on pro.pro_flag = flag_id
	where flag.flag_group =  1 
   ) as ss
group by ss.s_id


линейно у меня было с самого начала - именно в таком варианте - но не устраивало быстродействие (в таблице pro больше 10М записей, в flag - 1M) inner join был главный тормоз в запросе.

так что все танцы с бубном для того, чтобы получить нормальную скорость выполнения.
40 секунд с линейным запросом и пару секунд из ХП - увеличение скорости выполнения на порядок.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обект закрыт (Recordset) хотя в QA MSSQL запрос выполняется
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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