Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Отличается результат работы ХП от результата при её отладки  [new]
mikka sikorsky
Member

Откуда:
Сообщений: 64
Приветствую.
Не могу понять, почему происходит такая жуть.
При запуске кода, который содержится в хранимой процедуре, задавая предварительно нужные параметры, получаю в результате требуемые данные, они упорядочены так, как нужно. А при выполнении этой хранимой процедуры через exec получаю другие данные. Внутри кода ХП собираются данные во временные таблицы и результирующий запрос такой:
select * from #report_table
order by Id, RecNo, GroupNo

Пример результата, полученного после запуска кода хранимой процедуры:
Id	RecNo		GroupNo		Numer
1	1		1		6303005
2	2		1		6303005
3	3		1		6303005
4	4		1		6303005
5	5		1		6303005
6	6		1		6303005
7	7		1		6303005
8	8		1		6303005
9	9		1		6303005
10	10		1		6303005
11	11		1		6303005
12	12		1		6303005
13	13		1		6303005
14	14		1		6303005
...

А это пример результата, полученного после запуска хранимой процедуры через exec:
Id	RecNo		GroupNo		Numer
1	1		1		6303005
2	2		1		2006094
3	3		1		73461
4	4		1		6534373
5	5		1		163225
6	6		1		125142
7	7		1		4995140
8	8		1		6303005
9	9		1		2006094
10	10		1		73461
11	11		1		6534373
12	12		1		163225
13	13		1		125142
14	14		1		4995140
...

Помогите, пожалуйста, конструктивным советом. Спасибо.
26 дек 16, 13:14    [20048682]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
mikka sikorsky,

автор
Помогите, пожалуйста, конструктивным советом. Спасибо.

ну по таким вводным, совет только один: святой водой сервер окропите
26 дек 16, 13:16    [20048693]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
mikka sikorsky
Member

Откуда:
Сообщений: 64
поясню, что в результате должны получаться 7 групп с номерами:
6303005
2006094
73461
6534373
163225
125142
4995140
т.е. в первом посте я привел только 14 записей, могу привести все результаты, но это портянка, т.к. в каждой группе по 61 записи
26 дек 16, 13:18    [20048702]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
aleks2
Guest
Осподе, нешто так сложно вставить в свою "процедуру" промежуточные select в достаточном количестве и посмотреть: чаво там реально валится в таблицу?
26 дек 16, 13:19    [20048707]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
mikka sikorsky,

нафига нам ваши данные, вы не правильно в таблицу пишите, а скорее всего апдейтите
26 дек 16, 13:21    [20048719]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
mikka sikorsky
Member

Откуда:
Сообщений: 64
может, я непонятно описал проблему, повторюсь ещё раз.
если хранимке сделать modify, открыть её скрипт, убрать шапку с "alter procedure"
и вставить в начало параметры со значениями, запустить этот код, то результат ожидаемый и верный.
а если просто выполнить exec <procedure> @parameter1, @parameter2, то результат неверный.
26 дек 16, 13:23    [20048731]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
aleks2
Guest
mikka sikorsky
может, я непонятно описал проблему, повторюсь ещё раз.
если хранимке сделать modify, открыть её скрипт, убрать шапку с "alter procedure"
и вставить в начало параметры со значениями, запустить этот код, то результат ожидаемый и верный.
а если просто выполнить exec <procedure> @parameter1, @parameter2, то результат неверный.


Еще раз повторю: вставка достаточного количества select в процедуру прольет свет озаренья.

ЗЫ. 101% - кривые руки-мозги писателя.
26 дек 16, 13:35    [20048793]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8723
Криво параметры обрабатываются или путаете местами.
26 дек 16, 18:57    [20050262]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
mikka sikorsky
Member

Откуда:
Сообщений: 64
итак, проблема была в том, что джоинились временная таблица с переменной табличного типа.
как только заменил переменную на временную таблицу всё заработало.
26 дек 16, 22:06    [20050693]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31912
mikka sikorsky
итак, проблема была в том, что джоинились временная таблица с переменной табличного типа.
как только заменил переменную на временную таблицу всё заработало.
Вы же понимаете, что проблема в ошибке в коде, и эта ошибка осталась?
Или вы серьёзно бумаете, что из за мелкософтовских багов запросы к таблице-переменной выполняются с другим результатом, чем запросы с временной таблицей?

Берегите ошибочную версию, попытайтесь в ней найти ошибку.
Как уже писали, вставляйте отладочные выводы, смотрите, в каком месте реальный результат отличается от ожидаемого.

Иначе эта ошибка проявится потом, во время реальной эксплуатации, на реальных данных, инфа 146%.
26 дек 16, 22:20    [20050717]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
stdvb
Member

Откуда:
Сообщений: 41
Так у вас сортировка не однозначная, нужно так:
order by Id, RecNo, GroupNo, Number
27 дек 16, 09:37    [20051420]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
stdvb
Так у вас сортировка не однозначная, нужно так:
order by Id, RecNo, GroupNo, Number

и что изменится?

автор
итак, проблема была в том, что джоинились временная таблица с переменной табличного типа.
как только заменил переменную на временную таблицу всё заработало.

и в итоге вы заменили вставку, точнее скорее всего сделали её правильной, а так фантастика
27 дек 16, 10:15    [20051560]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31912
TaPaK
и в итоге вы заменили вставку, точнее скорее всего сделали её правильной, а так фантастика
Бывают, люди пишут такие причудливые запросы (то есть делают такие причудливые ошибки), что результат запроса, то есть буквально данные на выходе, зависят от плана запроса и прочих случайных вещей. Ну а замена временной таблицы на таблицу-переменную как раз на это влияет.
Хотя да, может, и просто случайно переписал правильно.
27 дек 16, 14:22    [20052894]     Ответить | Цитировать Сообщить модератору
 Re: Отличается результат работы ХП от результата при её отладки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31912
TaPaK
stdvb
Так у вас сортировка не однозначная, нужно так:
order by Id, RecNo, GroupNo, Number


и что изменится?
Это намёк на то, что, возможно, в результате поля Id, RecNo, GroupNo не уникальные.
Тогда как бы результат одинаковый, просто этого не видно.
27 дек 16, 14:26    [20052915]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить