|
запрос sql возвращает ошибку | ☑ | ||
---|---|---|---|---|
0
Сотрудница
02.03.16
✎
14:53
|
есть пара функций, откуда вызываются запросы, соответственно запросов тоже два.
один попроще, отрабатывает нормально на втором выходит ошибка: Ошибка при получении значения атрибута контекста (EOF) Если RecordSet.EOF И RecordSet.BOF Тогда по причине: Произошла исключительная ситуация (ADODB.Recordset): Operation is not allowed when the object is closed. функции с запросами отличаются только собственно текстами запросов. второй запрос на sql ms отработал тоже верно, но в 1с идет ошибка в чем может быть дело? вот тест второго запроса SELECT distinct n_rtcustomer into #points FROM rtcustomers WHERE n_kc = 0 and n_canal = '2' and n_region = '1063' AND n_rtcustomerDS = '120328' and n_zone = 0 and n_categ in ('5','6') and n_mmode in ('1') CREATE unique clustered index MyIndex1 on #points(n_rtcustomer) SELECT distinct Sale.n_rtcustomer FROM Sale inner join #points as t2 on Sale.n_rtcustomer = t2.n_rtcustomer WHERE SaleMarker = '1' AND date < '20160201' AND date >= '20150801' AND n_region = '1063'AND n_rtcustomerDS = '120328' drop table #points |
|||
1
f_vadim
02.03.16
✎
14:57
|
а drop table разве возвращает какой-то recordset?
или я чего-то не понимаю? |
|||
2
Сотрудница
02.03.16
✎
15:03
|
он таблицу временную удаляет, без этого на sql ms идет ошибка, что такая таблица уже существует
|
|||
3
f_vadim
02.03.16
✎
15:07
|
видимо придётся сделать усилие и вынести drop table в третий запрос
|
|||
4
rsv
02.03.16
✎
15:07
|
(0) Да оберните все в хранимку и дерните ее.
|
|||
5
rsv
02.03.16
✎
15:09
|
В хранимке drop table #points можно не писать т.к. они удаляются сами .
|
|||
6
f_vadim
02.03.16
✎
15:12
|
а можно ещё сделать соответствие соответствий по общим полям и запихать в них структуру с дополнительными полями.
это просто мысль, как альтернатива - производительность и потребление ресурсов нужно проверять. |
|||
7
f_vadim
02.03.16
✎
15:12
|
(6) не в ту ветку :(
|
|||
8
rsv
02.03.16
✎
15:14
|
и всего одна строка вызова Exec МояХранимка . Просто и коротко.
|
|||
9
Сотрудница
09.03.16
✎
12:45
|
(3)
убрала "drop table #points" из запроса выходит та же ошибка |
|||
10
HardBall
09.03.16
✎
13:45
|
(9) Нет записей?
|
|||
11
Сотрудница
09.03.16
✎
13:46
|
(10) копирую текст запроса, выполняю его в sql - записи есть
|
|||
12
Ёпрст
09.03.16
✎
13:50
|
по адо хочешь пакетник выполнить ?
|
|||
13
Ёпрст
09.03.16
✎
13:51
|
выкини дроп и первый запрос помести просто в подзапрос во втором селекте(заместо создания временной таблички)
|
|||
14
Ёпрст
09.03.16
✎
13:51
|
усё
|
|||
15
Сотрудница
09.03.16
✎
13:55
|
(12,13,14)
угу, хотела не работает такое, да? сначала так и сделала, но в sql посмотрела, что с подзапросом намного дольше выполняется хотела оптимизировать |
|||
16
Ёпрст
09.03.16
✎
13:56
|
(15) неа
|
|||
17
olegves
09.03.16
✎
13:57
|
(15) между запросами знак ; проставь или операторы используй Begin...End
|
|||
18
olegves
09.03.16
✎
13:59
|
+(17) а дроп выполняй уже после обработки результата запроса
|
|||
19
Сотрудница
09.03.16
✎
14:09
|
(17, 18) ";" уже пробовала, не помогло
дроп убрала вообще, почему-то не ругается на существующую таблицу, может она между запросами уничтожается... |
|||
20
Записьдампа
09.03.16
✎
14:14
|
(0) Верни запрос в исходное сосотяние и напиши в начале SET NOCOUNT ON
Специалистов развелось... |
|||
21
Сотрудница
09.03.16
✎
14:16
|
(20) в исходное - это в какое? как в (0)?
|
|||
22
Записьдампа
09.03.16
✎
14:18
|
(21) да, вместе с дропом времянки и т.п.
|
|||
23
Сотрудница
09.03.16
✎
14:20
|
(22) оо, спасибо большое!! все получилось
|
|||
24
Записьдампа
09.03.16
✎
14:21
|
Вообще времянку здесь лучше дропать с проверкой, как-то типа
if not object_id('tempdb..points') is null drop table #points Тогда при развале логики неожиданностей не будет |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |