Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / exception при получении значения переменной / 25 сообщений из 32, страница 1 из 2
17.07.2017, 13:51
    #39490165
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
Пишу такой код:
Код: plsql
1.
2.
3.
4.
5.
6.
  Select to_date(max(d.created), 'DD.MM.YYYY')
    Into date_last
    From date_sync d
   Where d.table_name = 'PROFILE.INSERT'
     And d.error_text Is Null
   Group By table_name;


При прохождении его, программа падает в exception
хотя врое как по правилам в переменную должен был бы записаться NULL,
и дальше идет его обработка.
Но почему-то падает в Exception
Почему так происходит и как сделать так что бы так не происходило...?
...
Рейтинг: 0 / 0
17.07.2017, 13:52
    #39490167
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015
Код: plsql
1.
Group By table_name

Мозги пропил?
...
Рейтинг: 0 / 0
17.07.2017, 14:14
    #39490187
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
ElicRMagistr2015
Код: plsql
1.
Group By table_name

Мозги пропил?
Наверное да ))) А это не правильно? )))))
...
Рейтинг: 0 / 0
17.07.2017, 14:17
    #39490190
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015Наверное да ))) А это не правильно? )))))Мозги, буде есть, ответили бы.
...
Рейтинг: 0 / 0
17.07.2017, 14:19
    #39490191
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
ElicRMagistr2015Наверное да ))) А это не правильно? )))))Мозги, буде есть, ответили бы.
))))))
Главное этот код заключен в begin .... end и есть свой exception
Но он почему-то игнорирует его и переходит в самый конец, где стоит самый последний exception, выполняет его и завершается, и вся оставшаяся прога пролетает ((((
...
Рейтинг: 0 / 0
17.07.2017, 14:20
    #39490193
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015есть свой exceptionЭто не важно, когда нет самого главного.
...
Рейтинг: 0 / 0
17.07.2017, 14:26
    #39490197
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
ElicRMagistr2015есть свой exceptionЭто не важно, когда нет самого главного.
Что именно? )))
...
Рейтинг: 0 / 0
17.07.2017, 14:37
    #39490203
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015Пишу такой код:
Код: plsql
1.
2.
3.
4.
5.
6.
  Select to_date(max(d.created), 'DD.MM.YYYY')
    Into date_last
    From date_sync d
   Where d.table_name = 'PROFILE.INSERT'
     And d.error_text Is Null
   Group By table_name;


При прохождении его, программа падает в exception
хотя врое как по правилам в переменную должен был бы записаться NULL,
и дальше идет его обработка.
Но почему-то падает в Exception
Почему так происходит и как сделать так что бы так не происходило...?
Как обработать такую ошибку ? ((((
...
Рейтинг: 0 / 0
17.07.2017, 14:37
    #39490204
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015,
фича
ошибки не будет если нет group by, сравните
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
SQL> ed
  1  declare
  2   v_sum number;
  3  begin
  4   select sum(sal)
  5   into v_sum
  6   from emp
  7   where deptno in (-10,-20);
  8* end;
SQL> /

PL/SQL procedure successfully completed.

SQL> ed
Wrote file afiedt.buf

  1  declare
  2   v_sum number;
  3  begin
  4   select sum(sal)
  5   into v_sum
  6   from emp
  7   where deptno in (-10,-20)
  8   group by deptno;
  9* end;
SQL> /
declare
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at line 4



.....
stax
...
Рейтинг: 0 / 0
17.07.2017, 14:45
    #39490213
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015RMagistr2015Пишу такой код:
Код: plsql
1.
2.
3.
4.
5.
6.
  Select to_date(max(d.created), 'DD.MM.YYYY')
    Into date_last
    From date_sync d
   Where d.table_name = 'PROFILE.INSERT'
     And d.error_text Is Null
   Group By table_name;


При прохождении его, программа падает в exception
хотя врое как по правилам в переменную должен был бы записаться NULL,
и дальше идет его обработка.
Но почему-то падает в Exception
Почему так происходит и как сделать так что бы так не происходило...?
Как обработать такую ошибку ? ((((

Зачем Вам group by если d.table_name = 'PROFILE.INSERT'?

токо как прімер
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> ed
Wrote file afiedt.buf

  1  declare
  2   v_sum number;
  3  begin
  4   begin
  5    select sum(sal)
  6    into v_sum
  7    from emp
  8    where deptno in (-10,-20)
  9    group by deptno;
 10   exception
 11   when no_data_found then
 12     v_sum:=null;
 13   when others then
 14    raise;
 15   end;
 16* end;
SQL> /

PL/SQL procedure successfully completed.




ps
не по теме
d.created какого типа?

.....
stax
...
Рейтинг: 0 / 0
17.07.2017, 14:50
    #39490217
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015Elicпропущено...
Это не важно, когда нет самого главного.
Что именно? )))Того, что пропил.
...
Рейтинг: 0 / 0
17.07.2017, 15:00
    #39490229
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
ElicRMagistr2015пропущено...

Что именно? )))Того, что пропил.
Я так и знал что ты так пошутишь )))
...
Рейтинг: 0 / 0
17.07.2017, 15:10
    #39490240
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
stax..,

Спасибо большое ))) А почему так? ))
...
Рейтинг: 0 / 0
17.07.2017, 16:41
    #39490290
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015stax..,

Спасибо большое ))) А почему так? ))
я не знаю, фича наверное
в доке отображено кажись
часто используют(злоупотребляют) чтоб не провенять на data not found,
типа без group by всегда вернет одну строку

....
stax
...
Рейтинг: 0 / 0
17.07.2017, 16:55
    #39490309
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015Пишу такой код:
Код: plsql
1.
2.
3.
4.
5.
6.
  Select [color=red]to_date(max(d.created), 'DD.MM.YYYY')[/color]
    Into date_last
    From date_sync d
   Where d.table_name = 'PROFILE.INSERT'
     And d.error_text Is Null
   Group By table_name;



Ты, как я посмотрю, еще и любитель туда-сюда погонять, потипизировать?
...
Рейтинг: 0 / 0
17.07.2017, 17:35
    #39490328
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
XMLerТы, как я посмотрю, еще и любитель туда-сюда погонять, потипизировать?

ps
20650418

....
stax
...
Рейтинг: 0 / 0
17.07.2017, 17:39
    #39490330
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
stax.., XMLer намекает, что здесь есть источник для еще одной ошибки, кроме не ошибки no_data_found
...
Рейтинг: 0 / 0
17.07.2017, 17:52
    #39490333
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
boobystax.., XMLer намекает, что здесь есть источник для еще одной ошибки, кроме не ошибки no_data_found
я понимаю, поетому и спросил о типе
1) если символьный - проблемы с мах
2) если date - проблемы с нлс

......
stax
...
Рейтинг: 0 / 0
18.07.2017, 07:11
    #39490456
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
stax..boobystax.., XMLer намекает, что здесь есть источник для еще одной ошибки, кроме не ошибки no_data_found
я понимаю, поетому и спросил о типе
1) если символьный - проблемы с мах
2) если date - проблемы с нлс

......
stax

Тип date
...
Рейтинг: 0 / 0
18.07.2017, 07:58
    #39490467
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
stax..RMagistr2015пропущено...

Как обработать такую ошибку ? ((((

Зачем Вам group by если d.table_name = 'PROFILE.INSERT'?

токо как прімер
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> ed
Wrote file afiedt.buf

  1  declare
  2   v_sum number;
  3  begin
  4   begin
  5    select sum(sal)
  6    into v_sum
  7    from emp
  8    where deptno in (-10,-20)
  9    group by deptno;
 10   exception
 11   when no_data_found then
 12     v_sum:=null;
 13   when others then
 14    raise;
 15   end;
 16* end;
SQL> /

PL/SQL procedure successfully completed.




ps
не по теме
d.created какого типа?

.....
stax
Тут (в коде) к стати примерно так и написано, вот только он падает на в этот exception, а в тот который стоит в самом конце, получается что стоит два Exception no_data_found? и после второго, алгоритм завершает свою работу, не доделав половины из того что нужно :'-(((
...
Рейтинг: 0 / 0
18.07.2017, 08:05
    #39490470
arlx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
а падает с какой ошибкой то?
...
Рейтинг: 0 / 0
18.07.2017, 09:08
    #39490513
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015Тип date

смотрите что происходит

Select to_date(max(d.created), 'DD.MM.YYYY')
1) max - ищется макс дата, все ок
2) у to_date первый параметр символьный, max(d.created) неявно преобразуется в строку, по маске умолчанию
напр
Код: plsql
1.
2.
3.
4.
5.
SQL> select to_char(max(sysdate)) d from dual;

D
------------------------------------
18(Вівторок) Липень 2017 9:3:44


3) полученную строку "18(Вівторок) Липень 2017 9:3:44" преобразовываем опять в дату по маске 'DD.MM.YYYY', получаем ошибку

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> ed
Wrote file afiedt.buf

  1* select to_date(max(sysdate),'dd.mm.yyyy') d from dual
SQL> /
select to_date(max(sysdate),'dd.mm.yyyy') d from dual
               *
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected


SQL>



.....
stax
...
Рейтинг: 0 / 0
18.07.2017, 09:39
    #39490537
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
arlxа падает с какой ошибкой то?я прошу прощения, там стоят два:
Код: plsql
1.
exception when OTHERS then


А падает он с ошибкой:
ORA-01403: данные не найдены
...
Рейтинг: 0 / 0
18.07.2017, 09:43
    #39490541
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
arlxа падает с какой ошибкой то?
Переписал процедуру, вместо курсора поставил marge, теперь не падает в последний Exception, а падает в тот, который нужно.

самое интересное при marge не нужно искать последнююю дату, данные udate и insert вполне нормально сами по себе )))) Хороший оператор marge ))))
...
Рейтинг: 0 / 0
18.07.2017, 09:46
    #39490544
RMagistr2015
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
exception при получении значения переменной
RMagistr2015stax..пропущено...

я понимаю, поетому и спросил о типе
1) если символьный - проблемы с мах
2) если date - проблемы с нлс

......
stax

Тип date

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


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