|
v8: Ошибка переполнения SQL в запросе при преобразовании значения | ☑ | ||
---|---|---|---|---|
0
Stim
05.08.13
✎
17:34
|
Ошибка: Ошибка при выполнении операции над данными: Microsoft OLE DB Provider for SQL Server: Arithmetic overflow error converting numeric to data type numeric. HRESULT=80004005, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1
Данная ошибка возникает при попытке округления результата деления через функцию ВЫРАЗИТЬ() текст запроса: ... ; ВЫБРАТЬ ВремТабл.Числ КАК Числитель, ВремТабл.Знам КАК Знаменатель, ВремТабл.Числ/ВремТабл.Знам КАК Частное, ВЫРАЗИТЬ(ВремТабл.Числ/ВремТабл.Знам как Число(10,2)) КАК ЧастноеОкр//здесь ошибка. Если разр указать выше (10,1) -выдается ошибка сабжа. при этом знаменатель всегда отличен от нуля(условие в самой врем таблице), числ может быть равен нулю. Но даже если числ равен 0, то выразить (0 как число(10,2)) - выдает 0, без всякой ошибки.. |
|||
1
Stim
05.08.13
✎
17:35
|
Ошибка:
Ошибка при выполнении операции над данными: Microsoft OLE DB Provider for SQL Server: Arithmetic overflow error converting numeric to data type numeric. HRESULT=80004005, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1 Данная ошибка возникает при попытке округления результата деления через функцию ВЫРАЗИТЬ() текст запроса: . .. ; ВЫБРАТЬ ВремТабл.Числ КАК Числитель, ВремТабл.Знам КАК Знаменатель, ВремТабл.Числ/ВремТабл.Знам КАК Частное, ВЫРАЗИТЬ(ВремТабл.Числ/ВремТабл.Знам как Число(10,2)) КАК ЧастноеОкр//здесь ошибка. Если разр указать выше (10,1) -выдается ошибка сабжа. при этом знаменатель всегда отличен от нуля(условие в самой врем таблице), числ может быть равен нулю. Но даже если числ равен 0, то выразить (0 как число(10,2)) - выдает 0, без всякой ошибки.. |
|||
2
pessok
05.08.13
✎
17:36
|
а точно и числитель и знаменатель - числа. строка нигде не могла затесаться?
|
|||
3
МихаилМ
05.08.13
✎
17:36
|
методом вилки найдите ошибочную строчку
|
|||
4
Stim
05.08.13
✎
17:38
|
(2) точно. Число(10,1) обрабатывает без проблем
|
|||
5
Stim
05.08.13
✎
17:38
|
(3) какое условие для вилки?
|
|||
6
pessok
05.08.13
✎
17:38
|
ну тогда в MSDN :)
|
|||
7
МихаилМ
05.08.13
✎
17:40
|
(5)
первая половина записей ТЗ, если работает - вторая |
|||
8
pessok
05.08.13
✎
17:41
|
||||
9
Stim
05.08.13
✎
17:42
|
(7) этих записей там легион..
|
|||
10
МихаилМ
05.08.13
✎
17:45
|
(9)
сходимость алгоритма LG(легион) кстати ошибка должна быть и без выразить. обрабатывать данные пересылкой на субд очень дурной тон программирования. для этого прекрасно подходит скд. |
|||
11
pessok
05.08.13
✎
17:45
|
http://www.sql.ru/forum/328810/help-arithmetic-overflow-error-converting-numeric-to-data-type-numeric
Всем спасибо, причина найдена. А причина в данных... в одной из 10 000 строк поле Margin оказалось равным 90 000 000 % :) в общем проблема таки в переполнении. |
|||
12
pessok
05.08.13
✎
17:45
|
(10) плюсую, вычисляемые поля решают большинство таким проблем
|
|||
13
МихаилМ
05.08.13
✎
17:46
|
+(10) точнее log2 (легион)
|
|||
14
Stim
05.08.13
✎
17:57
|
Читаю статью про округления в запросе. Там оказывается целая наука..
|
|||
15
МихаилМ
05.08.13
✎
18:17
|
(14)
округления не причем |
|||
16
Stim
05.08.13
✎
23:02
|
еще есть варианты?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |