powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / exception при получении значения переменной
32 сообщений из 32, показаны все 2 страниц
exception при получении значения переменной
    #39490165
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
exception при получении значения переменной
    #39490167
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015
Код: plsql
1.
Group By table_name

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

Мозги пропил?
Наверное да ))) А это не правильно? )))))
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490190
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Наверное да ))) А это не правильно? )))))Мозги, буде есть, ответили бы.
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490191
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicRMagistr2015Наверное да ))) А это не правильно? )))))Мозги, буде есть, ответили бы.
))))))
Главное этот код заключен в begin .... end и есть свой exception
Но он почему-то игнорирует его и переходит в самый конец, где стоит самый последний exception, выполняет его и завершается, и вся оставшаяся прога пролетает ((((
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490193
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015есть свой exceptionЭто не важно, когда нет самого главного.
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490197
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicRMagistr2015есть свой exceptionЭто не важно, когда нет самого главного.
Что именно? )))
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490203
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
exception при получении значения переменной
    #39490204
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
exception при получении значения переменной
    #39490213
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
exception при получении значения переменной
    #39490217
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Elicпропущено...
Это не важно, когда нет самого главного.
Что именно? )))Того, что пропил.
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490229
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicRMagistr2015пропущено...

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

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

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

....
stax
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490309
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
exception при получении значения переменной
    #39490328
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerТы, как я посмотрю, еще и любитель туда-сюда погонять, потипизировать?

ps
20650418

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

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

......
stax

Тип date
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490467
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
exception при получении значения переменной
    #39490470
arlx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а падает с какой ошибкой то?
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490513
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
exception при получении значения переменной
    #39490537
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arlxа падает с какой ошибкой то?я прошу прощения, там стоят два:
Код: plsql
1.
exception when OTHERS then


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

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

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

......
stax

Тип date

А что за проблемы НЛС? )
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490551
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015arlxа падает с какой ошибкой то?
Переписал процедуру, вместо курсора поставил marge, теперь не падает в последний Exception, а падает в тот, который нужно.

самое интересное при marge не нужно искать последнююю дату, данные udate и insert вполне нормально сами по себе )))) Хороший оператор marge ))))

т.е. merge )))
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490614
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что за проблемы НЛС могут быть? )
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490639
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015А что за проблемы НЛС? )
Код: 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.
-- удачно:
> alter session set nls_date_format = 'dd-mon-rr'
session SET altered.
> Select to_date(date'2017-06-11', 'DD.MM.YYYY') from dual
TO_DATE(DATE'2017-06-11','DD.MM.YYYY')
--------------------------------------
11-jun-17                              


-- Неудачно:
> alter session set nls_date_format = 'yyyy-mm-dd'
session SET altered.
> Select to_date(date'2017-06-11', 'DD.MM.YYYY') from dual

Error starting at line 5 in command:
Select to_date(date'2017-06-11', 'DD.MM.YYYY') from dual
Error report:
SQL Error: ORA-01861: literal does not match format string

-- Полный звиздец:
> alter session set nls_date_format = 'mm.dd.yyyy'
session SET altered.
> Select to_char(
  to_date(date'2017-06-11', 'DD.MM.YYYY') 
  , 'dd-MON-yyyy')
from dual
TO_CHAR(TO_DATE(DATE'2017-06-11','DD.MM.YYYY'),'DD-MON-YYYY')
-------------------------------------------------------------
06-NOV-2017           
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490660
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

т.е. вы говорите о формате даты по умолчанию для сессии, что они могут отличаться.
И как же быть в данном случае? ((((
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490666
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015И как же быть в данном случае?
Прочитать Globalization support guide
Знаю, знаю - Вы слишком занятой человек для этого.
И все таки.
Как минимум - раздел "Datetime and Interval Arithmetic" тут:
https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm
Потом тут:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions201.htm#SQLRF06151
Осознать и глупостей не делать.
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490671
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015andrey_anonymous,

т.е. вы говорите о формате даты по умолчанию для сессии, что они могут отличаться.
И как же быть в данном случае? ((((

НЕ УСПОЛЬЗОВАТЬ to_date("параметр с типом date")

зи
причем тут merge

....
stax
...
Рейтинг: 0 / 0
exception при получении значения переменной
    #39490811
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousRMagistr2015И как же быть в данном случае?
Прочитать Globalization support guide
Знаю, знаю - Вы слишком занятой человек для этого.
И все таки.
Как минимум - раздел "Datetime and Interval Arithmetic" тут:
https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm
Потом тут:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions201.htm#SQLRF06151
Осознать и глупостей не делать.
)))))))))))))
Спасибо большое )))
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / exception при получении значения переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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