Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
DBAshnik
В этом меня тут пока никто не переубедил!
Милый друг, но тебе же уже пояснили, что для того, чтобы выполнилось неявное преобразование должен быть известен тип того, что преобразовывается.
В отличие от других языков порграммрование, в Оракл нет специального типа для null.

Все измышлизмы "интуитивно-удобно" и "интуиция подсказывает" это только от скудоумия.
Для возможности предметно вести дискуссию рекомендуется хотя бы на нчальном уровне ознакомиться
1) как работают парсеры
2) как в парсерах работает механизм уведомления про ошибки
3) как работают неявные преобразования (тут надо почитать про более чем один язык)

Если ты достаточно долго останешься в АйТи, то тут возможны два варианта, либо тебе будет стыдно за свою бестолковость либо ты так и останешься... "непереубежденным".
4 окт 18, 17:56    [21695595]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 229
andrey_anonymous
softwarer
попробуй угадать результат

Что тут угадывать? ORA-01722 или нормальное выполнение - как фишка ляжет.


у меня лично ORA-01722. Ну это уж не такое и жлобство, вообщем-то... Штука общеизвестная, имхо!

Но вот 5 + '3' = '53' это в оракле, конечно, чистейший криминал!!!
4 окт 18, 18:00    [21695600]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
DBAshnik
??? это где такие бажищи!?!

scala> val x = 5 +"3"
x: String = 53

scala> val x = 5 +'3'
x: Int = 56

scala> val x = 5 + 3
x: Int = 8


И, конечно
scala> case class DBAshnik()
defined class DBAshnik

scala> val result = 1 * DBAshnik()
result: Int = 0

Знаешь почему 1 умножить на ДБАшника равно ноль? Потому что ты ноль, абсолютный ноль.
Главное, что работает неявное преобразование.
+
scala> implicit def DBAshnikToInt(p: DBAshnik) = 0
DBAshnikToInt: (p: DBAshnik)Int
4 окт 18, 18:01    [21695605]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 229
dbms_photoshop
DBAshnik
В этом меня тут пока никто не переубедил!
Милый друг, но тебе же уже пояснили, что для того, чтобы выполнилось неявное преобразование должен быть известен тип того, что преобразовывается.
В отличие от других языков порграммрование, в Оракл нет специального типа для null.

Все измышлизмы "интуитивно-удобно" и "интуиция подсказывает" это только от скудоумия.
Для возможности предметно вести дискуссию рекомендуется хотя бы на нчальном уровне ознакомиться
1) как работают парсеры
2) как в парсерах работает механизм уведомления про ошибки
3) как работают неявные преобразования (тут надо почитать про более чем один язык)

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


понятно, мог бы и покороче мысль выразить: "разберись cначала в механизме переключения телканалов плоскогубцами, сопляк" ;-)
4 окт 18, 18:02    [21695606]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 54510
Блог
DBAshnik
у меня лично ORA-01722.

Я бы на твоём месте не стал на это рассчитывать :) Завтра фишка может лечь другим образом :)
4 окт 18, 18:07    [21695609]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
DBAshnik
Нежелание ораклом сделать интуитивно-удобно равно и неадекватная диагностика ошибок оракл (как в этом, так и в других случаях) совершенно очевидно имеет место быть!!! В этом меня тут пока никто не переубедил!

DBAshnik
Интуиция подсказывает, что есть сравнивается, например, с date, то и подставляй - будь любезен - to_date() за человека автоматически, или это уже про запредельный hi-tec по твоему? ;-)

Предположим, Oracle услышал и решил реализовать идею.
Но просит уточнить: какой результат автоматического интуитивного to_date будет приемлем для литералов:
1) 43375
2) 2458396
3) '2458396'
4) '04/11/18'
4 окт 18, 18:10    [21695616]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 229
dbms_photoshop

scala> val x = 5 +"3"
x: String = 53

это вообще что за язык и где? Речь шла обо оракловском SQL и PL/SQL

dbms_photoshop

scala> case class DBAshnik()
defined class DBAshnik

с каких пор мы тут соскочили на обсуждение явы??!? Повторяю, речь шла обо оракловском SQL и PL/SQL!

dbms_photoshop

Главное, что работает неявное преобразование.

я _знаю_ про неявное преобразование! Не лечи меня, плиз!!!!

dbms_photoshop

Потому что ты ноль, абсолютный ноль.

ну всё ясно, хамить мы умеем. А убеждать коллег, пока нет, увы (может именно посему так долго и не повышают по службе? ;-) )
4 окт 18, 18:13    [21695620]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
DBAshnik
у меня лично ORA-01722.

SQL> select /*+ ordered use_nl(t$2) ordered_predicates */ *
  from t$1, t$2 where t$1.i = t$2.i and t$1.j = t$2.j
;
         I          J          I J
---------- ---------- ---------- ---
         1          1          1 1

SQL> select /*+ ordered use_hash(t$2) ordered_predicates */ *
  from t$1, t$2 where t$1.i = t$2.i and t$1.j = t$2.j
;

select /*+ ordered use_hash(t$2) ordered_predicates */ *
  from t$1, t$2 where t$1.i = t$2.i and t$1.j = t$2.j

ORA-01722: неверное число

SQL> 
4 окт 18, 18:17    [21695624]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
DBAshnik
это вообще что за язык и где? Речь шла обо оракловском SQL и PL/SQL
Там же вроде напимано на каждой второй строке.
DBAshnik
с каких пор мы тут соскочили на обсуждение явы??!? Повторяю, речь шла обо оракловском SQL и PL/SQL!
Другой язык был показан для расширения кругозора и видимо зря.
DBAshnik
я _знаю_ про неявное преобразование! Не лечи меня, плиз!!!!
То, что пациент не поддается лечению я уже понял.
DBAshnik
ну всё ясно, хамить мы умеем. А убеждать коллег, пока нет, увы
При чем здесь убеждать, были попытки объяснить. Разных людей, разными методами. Но для этого вопрошающий должен быть готов думать.
4 окт 18, 18:23    [21695637]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 229
andrey_anonymous
Предположим, Oracle услышал и решил реализовать идею.
Но просит уточнить: какой результат автоматического интуитивного to_date будет приемлем для литералов:


я имел ввиду естественно только для случая null! Т.е.

1. Видим в using стоит ..., null,...
2. Видим тип колонки/переменной для :x - он, допустим, date! ( или number или char и т.д)
3. Подменяем (за дорогого и уважаемого пользователя, сделавшего нас миллиардерами! ;-) ) перед выполнением на ..., to_date(null),... ( или to_number(null) или to_char(null) и т.д. )

Что-то в этом роде, по логике. Но ещё раз: я в Оракле не работаю!!!!! Хотя, столь "сложнейший нечеловеческий хайтек" могли, бы наверное и запаять в 2018м годе то! Вот о чём речь то! И только об этом!!!
4 окт 18, 18:27    [21695641]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 229
andrey_anonymous
DBAshnik
у меня лично ORA-01722.

SQL> select /*+ ordered use_nl(t$2) ordered_predicates */ *
  from t$1, t$2 where t$1.i = t$2.i and t$1.j = t$2.j
;
         I          J          I J
---------- ---------- ---------- ---
         1          1          1 1

SQL> select /*+ ordered use_hash(t$2) ordered_predicates */ *
  from t$1, t$2 where t$1.i = t$2.i and t$1.j = t$2.j
;

select /*+ ordered use_hash(t$2) ordered_predicates */ *
  from t$1, t$2 where t$1.i = t$2.i and t$1.j = t$2.j

ORA-01722: неверное число

SQL> 


ну да, хинтами владеешь! Зачёт! Я, кстати, тоже. ;-)
Будем дальше сьезжать на смежные темы? Другие языки программирования? А можeт кто-нибудь хочет перетереть тут за неорганическую химию? ;-) (я люблю этот прекрасный предмет!!! :-) )
4 окт 18, 18:33    [21695647]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
DBAshnik
ну да, хинтами владеешь!

При чем тут хинты?
4 окт 18, 18:34    [21695649]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28493
DBAshnik
2. Видим тип колонки/переменной для :x
Неизлечимый кретинизм.
+
select :x from dual
union all
select :y from dual
4 окт 18, 18:35    [21695652]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 54510
Блог
DBAshnik
Хотя, столь "сложнейший нечеловеческий хайтек" могли, бы наверное и запаять

Во-первых, вряд ли хоть один человек в здравом уме придумает, что такой хайтек может кому-то понадобиться.

Во-вторых, если бы мне как техлиду поступило такое предложение - я бы его отверг. Потому что практической пользы голый ноль, вероятность внести ошибку таки существует, а необходимые на реализацию этого время и силы куда лучше потратить на что-нибудь полезное.

Отдельно, я бы задумался, в каких ещё случаях может возникать подобная проблема и прикинул бы, насколько возможно реализовать для этого случая более внятную диагностику. По итогам, возможно, решил бы её сделать.
4 окт 18, 18:39    [21695658]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
softwarer
Отдельно, я бы задумался, в каких ещё случаях может возникать подобная проблема и прикинул бы, насколько возможно реализовать для этого случая более внятную диагностику. По итогам, возможно, решил бы её сделать.

Ммм? Более внятную?
Смотрим:
https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/literal.htm#LNPLS01326
откуда следует, что null - это литерал типа boolean.
boolean в oracle - не SQL-тип, по крайней мере, в тех версиях, с которыми я до сих пор работал :)
Отсюда следует:
PLS-00457:"expressions have to be of SQL types" 

Все предельно ясно, кмк.
4 окт 18, 18:52    [21695679]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
andrey_anonymous
softwarer
Отдельно, я бы задумался, в каких ещё случаях может возникать подобная проблема и прикинул бы, насколько возможно реализовать для этого случая более внятную диагностику. По итогам, возможно, решил бы её сделать.

Все предельно ясно, кмк.

Хотя нет, не прав.
В PL/SQL null-expression тоже имеет специальную трактовку, можно было бы отдельным exception оформить:
SQL> begin execute immediate q'[begin dbms_output.put_line(case when :1 is null then ':1 is null!' when :1 then ':1 is TRUE' when not :1 then ':1 is FALSE' end); end;]' using true; end;
  2  /
:1 is TRUE
PL/SQL procedure successfully completed

SQL> begin execute immediate q'[begin dbms_output.put_line(case when :1 is null then ':1 is null!' when :1 then ':1 is TRUE' when not :1 then ':1 is FALSE' end); end;]' using false; end;
  2  /
:1 is FALSE
PL/SQL procedure successfully completed

SQL> begin execute immediate q'[begin dbms_output.put_line(case when :1 is null then ':1 is null!' when :1 then ':1 is TRUE' when not :1 then ':1 is FALSE' end); end;]' using null; end;
  2  /
begin execute immediate q'[begin dbms_output.put_line(case when :1 is null then ':1 is null!' when :1 then ':1 is TRUE' when not :1 then ':1 is FALSE' end); end;]' using null; end;
ORA-06550: Строка 1, столбец 171:
PLS-00457: выражения должны иметь тип SQL
ORA-06550: Строка 1, столбец 7:
PL/SQL: Statement ignored

SQL> begin execute immediate q'[begin dbms_output.put_line(case when :1 is null then ':1 is null!' when :1 then ':1 is TRUE' when not :1 then ':1 is FALSE' end); end;]' using cast(null as boolean); end;
  2  /
:1 is null!
PL/SQL procedure successfully completed

SQL> 
4 окт 18, 19:23    [21695716]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
Vint
Member

Откуда: Таган-москва
Сообщений: 4538
Господа, снимаю шляпу перед вашим долготерпением и желание наставить на пусть истинный) скупая мужская слеза катилась по моему лицу все три страницу сего занимательного чтива.
понимая вашу грусть по высокоинтеллектуальным беседам выражаю общую солидарность с направлением движения топикстартера в правильном направлении на Йух. Oracle совсем не торт... и творит всякие безобразия...)

dbms_photoshop - напиши вторую книгу. про оракловые заблуждения)) отличная вещь получится))

DBAshnik,
Ату их сирых и убогих... не понимают желания творца...))
может тебе стоит создать свою СУБД? в ней все будет так как хочешь только ты.. захватишь рынок импортозамещением, а то копаешься во всякой фигне... ты ж уже все знаешь, хинты вон выучил.
4 окт 18, 19:28    [21695724]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 54510
Блог
andrey_anonymous
откуда следует, что null - это литерал типа boolean.

В тех случаях, когда дока очевидно противоречит наблюдаемым фактам, я предпочитаю не до конца верить доке.

SQL> declare
  2    x integer := to_number(null);
  3    y integer := to_number(true);
  4  begin
  5    null;
  6  end;
  7  /

ORA-06550: Строка 3, столбец 16:
PLS-00306: ошибочно число или типы аргументов при обращении к 'TO_NUMBER'
ORA-06550: Строка 3, столбец 5:
PL/SQL: Item ignored


andrey_anonymous
Все предельно ясно, кмк.

Позволю себе вытащить одну свою старую реплику:

+
Уже давно, в юности, я прочитал в журнале короткую историю: якобы, в начале восьмидесятых годов в нью-йоркском метрополитене привычную для нас надпись "Выхода нет" заменили надписью "Выход с другой стороны", и уже в следующем году городская статистика продемонстрировала заметное снижение количества самоубийств. Оказалось, что даже такая мелочь способна повернуть к свету либо выступить в роли последней соломинки.

Только что я получил сообщение об ошибке. Цитирую: "Свойство XXX участвует в существующем подключении. Удаление невозможно". Казалось бы, всё понятно и просто, но прелесть ситуации придаёт тот факт, что я как раз таки пытался убрать свойство из существующего подключения, разорвать связь между ними. Мусор нельзя убрать из дома потому, что мусор находится в доме. Просто очаровательно. В результате я был как та учительница русского языка, впервые прыгнувшая с парашютом - изрядно потрясён, крайне удивлён и в высшей степени обескуражен, но вслух при этом хотелось говорить совсем по-другому.

Этот случай демонстрирует основную проблему большинства сообщений об ошибках, написанных программистами: сообщение описывает проблемную ситуацию, но не даёт информации, как её исправить. В результате пользователь чувствует себя примерно как водитель, встретивший знак "кирпич" посреди прямой, как стрела, автомагистрали. Ему нужно туда, вперёд, но движение невозможно. Без вариантов. Русским языком написано: не-воз-мож-но. Выхода нет, остаётся только выключить компьютер, выйти из офиса и повеситься на первом суку.

Чтобы не уподобляться авторам таких сообщений, напишу и то очевидное, что нужно делать. Сообщение об ошибке должно состоять из двух чётких частей: описание самой проблемы и перечисление возможных путей её решения. Например, как оказалось в моём случае, перед удалением свойства нужно было стереть его непустые значения в подключениях - ну так чёрт возьми, напишите об этом. А ещё лучше - вместо кнопки "ОК" всадите в диалог кнопку "стереть непустые значения в подключениях и таки удалить что просили". Дайте человеку выполнять свою работу вместо того, чтобы отгадывать понятные только автору ребусы.
4 окт 18, 19:54    [21695744]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
softwarer
В тех случаях, когда дока очевидно противоречит наблюдаемым фактам

Вообще говоря, имеем дело с новой фичей 12с.
Было:
Oracle® Database PL/SQL Language Reference
11g Release 2 (11.2)
Restriction on bind_argument
The value of bind_argument cannot be TRUE, FALSE, or NULL. To pass the value NULL to the dynamic SQL statement, use an uninitialized variable where you want to use NULL, as in "Uninitialized Variable for NULL in USING Clause".


Стало:
12.1 Database PL/SQL Language Reference
Restrictions on bind_argument

bind_argument cannot be an associative array indexed by string.

bind_argument cannot be the reserved word NULL.

To pass the value NULL to the dynamic SQL statement, use an uninitialized variable where you want to use NULL, as in Example 7-7.


Так что, быть может, и допилят, раз функционал все еще развивается.
4 окт 18, 20:17    [21695763]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9236
NULL это больная тема в ORACLE и посему дока по NULL вызывает вопросы. Но ссылка на boolean literals это из серии all poodles are dogs but not all dogs are poodles. Иначе мы придем к тому что:

DECLARE
    V_DT DATE;
BEGIN
    V_DT := NULL;
END;
/


преобразует boolean в date :). B PL/SQL есть понятие NULL value (определение конечно не проводится). B SQL определение simple expression гласит "A simple expression specifies a column, pseudocolumn, constant, sequence number, or null". Что такое null есс-но не приводится. Master Glossary гласит:

NULL value

Absence of a value in a column of a row. Nulls indicate missing, unknown, or inapplicable data. A null should not be used to imply any other value, such as zero.

Не густо, но отбросив "in a column of a row" имеем "Absence of a value" в рафинированном виде когда мы не знаем ни поле ни переменную и посему NULL value само по себе типа не имеет.

SY.
4 окт 18, 20:48    [21695792]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
andrey_anonymous
Так что, быть может, и допилят, раз функционал все еще развивается.
Главное определиться куда пилить.
А то непонятно, хайтековые парни хотят неявное преобразование или "более конкретное" сообщение об ошибке.

В первом случае надо выводить SQL тип литерала, будь то varchar2(0), новый какой-то тип null или что-то еще и к нему применять преобразование.
Во втором случае тоже надо какой-то тип, наверное, выводить, ну чтоб была конкретика какой именно не SQL тип.
А главное - зачем? Вся истерия ТС из-за работы с литералом.
4 окт 18, 22:10    [21695833]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
softwarer
Позволю себе вытащить одну свою старую реплику
Так как должно выглядеть сообщение так чтоб по-человечески? И должно ли оно вообще быть?

Какие в этих случаях дожны быть "правильные сообщения"?
SQL> declare
  2    lCnt pls_integer;
  3    lx dual%rowtype;
  4  begin
  5    select 1 into lx.dummy from dual;
  6    execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using lx;
  7  end;
  8  /
declare
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected DATE got PLSQL RECORD
ORA-06512: at line 6


SQL> declare
  2    lCnt pls_integer;
  3    type tp is record(dummy int);
  4    lx tp;
  5  begin
  6    select 1 into lx.dummy from dual;
  7    execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using lx;
  8  end;
  9  /
  execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using lx;
                                                                                       *
ERROR at line 7:
ORA-06550: line 7, column 88:
PLS-00457: expressions have to be of SQL types
ORA-06550: line 7, column 3:
PL/SQL: Statement ignored
Не забываем же еще что ошибки возникают на совершенно разном этапе - компиляция PL/SQL vs выпонение SQL.
Надо ли допускать такие вольности? Или все должно отлавливаться на одном этапе?

Что я хочу сказать - то, что ошибки должны быть предельно конкретными и максимально упрощающими нахождение проблемного места, но нельзя отметать того факта, что для понимания природы ошибки надо понимание техники работы.

softwarer
Сообщение об ошибке должно состоять из двух чётких частей: описание самой проблемы и перечисление возможных путей её решения.
Ага, а еще пару-тройку баек про ошибку, описание best practices как избегать и ссылки на ликбез по всем сопутствующим вопросам.
При этом должно быть перечисление ВСЕХ возможных путей решение, ибо если уж мартышка не думает, то нельзя ставить её в тупиковыю ситуацию без рецепта для именно её специфики.

softwarer
В результате пользователь чувствует себя
Чтоб пользователь лучше себя чувствовал (если речь про пользователя приложения а не его разработчика), то надо в любом случае преобразовывать ошибку в человеческий вид, пользователю эта вся ORA-хрень нафиг не сдалась.
4 окт 18, 22:12    [21695835]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16913
dbms_photoshop
эта вся ORA-хрень нафиг не сдалась.

Тут есть сразу несколько аспектов, которые не следует смешивать.
1. Содержательность сообщения об ошибке - собственно, текст сообщения. Он должен быть совершенно различен в зависимости от контекста и "целевой аудитории". Техническому специалисту требуются технические детали в терминах системы, конечному пользователю - в терминах его бизнес-области, как в прокламации softwarer.
ORA-XXXXX - это именно сообщения в терминах СУБД, рассчитанные на квалифицированного специалиста.
В этом смысле все относительно благополучно, хотя и не без эксцессов.
Трактовка же конкретной исключительной ситуации в контексте и терминах бизнес-области - не тема для "ORA-хрени"

2. Собственно, обработка исключительной ситуации. Сколько копий сломано вокруг 'when others'... А между тем именно в этой части система исключений PL/SQL весьма далека от совершенства. В первую голову потому, что разработчик должен по сути угадать какие исключительные ситуации возможны в том или ином модуле. Оттого и популярен "others". Более современные языки этот вопрос решают посредством обязательной декларации возможных исключений на уровне интерфейса программной единицы.
Но в PL/SQL этого нет и вряд ли будет - проще язык сменить.
4 окт 18, 23:25    [21695868]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5149
andrey_anonymous
Но в PL/SQL этого нет и вряд ли будет - проще язык сменить.
Не смотря на то, что в Oracle хранимки можно писать на Java, .Net, JavaScript/TypeScript, вряд ли удастся переманить народ с несовершенного PL/SQL. :)
5 окт 18, 02:01    [21695916]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28493
andrey_anonymous
Так что, быть может, и допилят, раз функционал все еще развивается.
Это всего лишь следствие того, что More PL/SQL-Only Data Types Can Cross PL/SQL-to-SQL Interface.
5 окт 18, 07:53    [21695951]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / Oracle Ответить