Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не работает запрос в Хранимой процедуре / 5 сообщений из 5, страница 1 из 1
25.12.2018, 14:31
    #39752807
olgarx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос в Хранимой процедуре
Здравствуйте. Запрос на округление goods_mass работает отдельно в запросе.
Если goods_mass<10, то округляем до десятых
Если goods_mass>10, то округляем до большего целого

Код: plsql
1.
2.
3.
4.
5.
6.
select goods_mass,
       (case
       when substr((GOODS_MASS - substr(GOODS_MASS, 1, instr(GOODS_MASS, ',',1,1) - 1)), 2, 1) is null then GOODS_MASS
       when GOODS_MASS < 10 then round(GOODS_MASS,1)
       when GOODS_MASS > 10 then substr(GOODS_MASS, 1, instr(GOODS_MASS, ',',1,1)-1)+1 
       end)as mass_r;


Результат запроса
GOODS_MASS MASS_R
60 60
48,35 49
49,35 50
3,85 3,9
8 8
Тот же самый запрос не работает в хранимой процедуре
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  Update Dtj_Reestr T
     Set (T.Ktj_Summ, T.Koef_Vpk, T.Tariff_Summ, T.Mass_round, T.Summ_round) =
         (Select T.Goods_Mass * Dt.Tariff * 151, Dt.Koefficent, Dt.Tariff,
              case
              when substr((GOODS_MASS - substr(GOODS_MASS, 1, instr(GOODS_MASS, ',',1,1) - 1)), 2, 1) is null then GOODS_MASS
              when GOODS_MASS < 10 then round(GOODS_MASS,1)
              when GOODS_MASS > 10 then substr(GOODS_MASS, 1, instr(GOODS_MASS, ',',1,1)-1)+1
              end,         
              case 
              when substr((GOODS_MASS - substr(GOODS_MASS, 1, instr(GOODS_MASS, ',',1,1) - 1)), 2, 1) is null 
              then GOODS_MASS * Dt.Tariff*151 
              when GOODS_MASS < 10 then round(GOODS_MASS,1) * Dt.Tariff *151
              when GOODS_MASS > 10 then (substr(GOODS_MASS, 1, instr(GOODS_MASS, ',',1,1)-1)+1) * Dt.Tariff*151
              end         
            From Dtj_Tariff2 Dt
           Where t.distance_id=dt.distance_id
             AND t.direction_id=dt.direction_id
             And T.Moving_Type_Id = Dt.Moving_Type_Id
             AND t.good_group_id = dt.goods_group_id
             AND t.date_order between dt.period_date and dt.period_end)
   Where T.Vagon_Registers_Id = P_Vagon_Registers_Id
     And (T.Goods_Code_Id <> 2000 Or T.Goods_Code_Id <> 3000) AND t.distance_id=1 ;



Результат запроса
GOODS_MASS MASS_R
58,228 58,23
58,679 58,68
60,7 60,7
2,4 2,4
3,85 3,85

Подскажите, в чем может быть проблема?
Спасибо.
...
Рейтинг: 0 / 0
25.12.2018, 14:49
    #39752817
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос в Хранимой процедуре
olgarx,

Ошибка 19й строке.
Вот это: (T.Goods_Code_Id <> 2000 Or T.Goods_Code_Id <> 3000) проще делается через is not null.
...
Рейтинг: 0 / 0
25.12.2018, 14:56
    #39752829
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос в Хранимой процедуре
olgarxПодскажите, в чем может быть проблема?
В низкой квалификации.
Cледует освоить темы:
- неявные преобразования
- NLS support

А когда освоите выше упомянутое - почитайте до кучи руководство разработчика и самовыразитесь в стиле:
Код: plsql
1.
2.
3.
4.
5.
case 
         when goods_mass > 10 then ceil(goods_mass)
         when goods_mass < -10 then floor(goods_mass)
         else round(goods_mass,1)
       end
...
Рейтинг: 0 / 0
25.12.2018, 18:06
    #39752990
olgarx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос в Хранимой процедуре
andrey_anonymous, не обошлось без порции яда, но спасибо, заработало.
...
Рейтинг: 0 / 0
25.12.2018, 18:19
    #39753005
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос в Хранимой процедуре
olgarxне обошлось без порции яда, но спасибо, заработало.

Парацельс"Яд присутствует во всем, нет ничего без яда. Ядом или лекарством делает его дозировка".



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


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