|
|
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
DBAshnikВ этом меня тут пока никто не переубедил!Милый друг, но тебе же уже пояснили, что для того, чтобы выполнилось неявное преобразование должен быть известен тип того, что преобразовывается. В отличие от других языков порграммрование, в Оракл нет специального типа для null. Все измышлизмы "интуитивно-удобно" и "интуиция подсказывает" это только от скудоумия. Для возможности предметно вести дискуссию рекомендуется хотя бы на нчальном уровне ознакомиться 1) как работают парсеры 2) как в парсерах работает механизм уведомления про ошибки 3) как работают неявные преобразования (тут надо почитать про более чем один язык) Если ты достаточно долго останешься в АйТи, то тут возможны два варианта, либо тебе будет стыдно за свою бестолковость либо ты так и останешься... "непереубежденным". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 17:56 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
andrey_anonymoussoftwarerпопробуй угадать результат Что тут угадывать? ORA-01722 или нормальное выполнение - как фишка ляжет. у меня лично ORA-01722. Ну это уж не такое и жлобство, вообщем-то... Штука общеизвестная, имхо! Но вот 5 + '3' = '53' это в оракле, конечно, чистейший криминал!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:00 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
DBAshnik??? это где такие бажищи!?! Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. И, конечно Код: plsql 1. 2. 3. 4. 5. Знаешь почему 1 умножить на ДБАшника равно ноль? Потому что ты ноль, абсолютный ноль. Главное, что работает неявное преобразование. Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:01 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopDBAshnikВ этом меня тут пока никто не переубедил!Милый друг, но тебе же уже пояснили, что для того, чтобы выполнилось неявное преобразование должен быть известен тип того, что преобразовывается. В отличие от других языков порграммрование, в Оракл нет специального типа для null. Все измышлизмы "интуитивно-удобно" и "интуиция подсказывает" это только от скудоумия. Для возможности предметно вести дискуссию рекомендуется хотя бы на нчальном уровне ознакомиться 1) как работают парсеры 2) как в парсерах работает механизм уведомления про ошибки 3) как работают неявные преобразования (тут надо почитать про более чем один язык) Если ты достаточно долго останешься в АйТи, то тут возможны два варианта, либо тебе будет стыдно за свою бестолковость либо ты так и останешься... "непереубежденным". понятно, мог бы и покороче мысль выразить: "разберись cначала в механизме переключения телканалов плоскогубцами, сопляк" ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:02 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
DBAshnikу меня лично ORA-01722. Я бы на твоём месте не стал на это рассчитывать :) Завтра фишка может лечь другим образом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:07 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
DBAshnikНежелание ораклом сделать интуитивно-удобно равно и неадекватная диагностика ошибок оракл (как в этом, так и в других случаях) совершенно очевидно имеет место быть!!! В этом меня тут пока никто не переубедил! DBAshnikИнтуиция подсказывает, что есть сравнивается, например, с date, то и подставляй - будь любезен - to_date() за человека автоматически, или это уже про запредельный hi-tec по твоему? ;-) Предположим, Oracle услышал и решил реализовать идею. Но просит уточнить: какой результат автоматического интуитивного to_date будет приемлем для литералов: Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:10 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
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 Потому что ты ноль, абсолютный ноль. ну всё ясно, хамить мы умеем. А убеждать коллег, пока нет, увы (может именно посему так долго и не повышают по службе? ;-) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:13 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
DBAshnikу меня лично ORA-01722. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:17 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
DBAshnikэто вообще что за язык и где? Речь шла обо оракловском SQL и PL/SQLТам же вроде напимано на каждой второй строке. DBAshnikс каких пор мы тут соскочили на обсуждение явы??!? Повторяю, речь шла обо оракловском SQL и PL/SQL!Другой язык был показан для расширения кругозора и видимо зря. DBAshnikя _знаю_ про неявное преобразование! Не лечи меня, плиз!!!!То, что пациент не поддается лечению я уже понял. DBAshnikну всё ясно, хамить мы умеем. А убеждать коллег, пока нет, увыПри чем здесь убеждать, были попытки объяснить. Разных людей, разными методами. Но для этого вопрошающий должен быть готов думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:23 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
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м годе то! Вот о чём речь то! И только об этом!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:27 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousDBAshnikу меня лично ORA-01722. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ну да, хинтами владеешь! Зачёт! Я, кстати, тоже. ;-) Будем дальше сьезжать на смежные темы? Другие языки программирования? А можeт кто-нибудь хочет перетереть тут за неорганическую химию? ;-) (я люблю этот прекрасный предмет!!! :-) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:33 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
DBAshnikну да, хинтами владеешь! При чем тут хинты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:34 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
DBAshnik2. Видим тип колонки/переменной для :xНеизлечимый кретинизм. Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:35 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
DBAshnikХотя, столь "сложнейший нечеловеческий хайтек" могли, бы наверное и запаять Во-первых, вряд ли хоть один человек в здравом уме придумает, что такой хайтек может кому-то понадобиться. Во-вторых, если бы мне как техлиду поступило такое предложение - я бы его отверг. Потому что практической пользы голый ноль, вероятность внести ошибку таки существует, а необходимые на реализацию этого время и силы куда лучше потратить на что-нибудь полезное. Отдельно, я бы задумался, в каких ещё случаях может возникать подобная проблема и прикинул бы, насколько возможно реализовать для этого случая более внятную диагностику. По итогам, возможно, решил бы её сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:39 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
softwarerОтдельно, я бы задумался, в каких ещё случаях может возникать подобная проблема и прикинул бы, насколько возможно реализовать для этого случая более внятную диагностику. По итогам, возможно, решил бы её сделать. Ммм? Более внятную? Смотрим: https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/literal.htm#LNPLS01326 откуда следует, что null - это литерал типа boolean. boolean в oracle - не SQL-тип, по крайней мере, в тех версиях, с которыми я до сих пор работал :) Отсюда следует: Код: plaintext Все предельно ясно, кмк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 18:52 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
andrey_anonymoussoftwarerОтдельно, я бы задумался, в каких ещё случаях может возникать подобная проблема и прикинул бы, насколько возможно реализовать для этого случая более внятную диагностику. По итогам, возможно, решил бы её сделать. Все предельно ясно, кмк. Хотя нет, не прав. В PL/SQL null-expression тоже имеет специальную трактовку, можно было бы отдельным exception оформить: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 19:23 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
Господа, снимаю шляпу перед вашим долготерпением и желание наставить на пусть истинный) скупая мужская слеза катилась по моему лицу все три страницу сего занимательного чтива. понимая вашу грусть по высокоинтеллектуальным беседам выражаю общую солидарность с направлением движения топикстартера в правильном направлении на Йух. Oracle совсем не торт... и творит всякие безобразия...) dbms_photoshop - напиши вторую книгу. про оракловые заблуждения)) отличная вещь получится)) DBAshnik, Ату их сирых и убогих... не понимают желания творца...)) может тебе стоит создать свою СУБД? в ней все будет так как хочешь только ты.. захватишь рынок импортозамещением, а то копаешься во всякой фигне... ты ж уже все знаешь, хинты вон выучил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 19:28 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousоткуда следует, что null - это литерал типа boolean. В тех случаях, когда дока очевидно противоречит наблюдаемым фактам, я предпочитаю не до конца верить доке. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. andrey_anonymousВсе предельно ясно, кмк. Позволю себе вытащить одну свою старую реплику: Уже давно, в юности, я прочитал в журнале короткую историю: якобы, в начале восьмидесятых годов в нью-йоркском метрополитене привычную для нас надпись "Выхода нет" заменили надписью "Выход с другой стороны", и уже в следующем году городская статистика продемонстрировала заметное снижение количества самоубийств. Оказалось, что даже такая мелочь способна повернуть к свету либо выступить в роли последней соломинки. Только что я получил сообщение об ошибке. Цитирую: "Свойство XXX участвует в существующем подключении. Удаление невозможно". Казалось бы, всё понятно и просто, но прелесть ситуации придаёт тот факт, что я как раз таки пытался убрать свойство из существующего подключения, разорвать связь между ними. Мусор нельзя убрать из дома потому, что мусор находится в доме. Просто очаровательно. В результате я был как та учительница русского языка, впервые прыгнувшая с парашютом - изрядно потрясён, крайне удивлён и в высшей степени обескуражен, но вслух при этом хотелось говорить совсем по-другому. Этот случай демонстрирует основную проблему большинства сообщений об ошибках, написанных программистами: сообщение описывает проблемную ситуацию, но не даёт информации, как её исправить. В результате пользователь чувствует себя примерно как водитель, встретивший знак "кирпич" посреди прямой, как стрела, автомагистрали. Ему нужно туда, вперёд, но движение невозможно. Без вариантов. Русским языком написано: не-воз-мож-но. Выхода нет, остаётся только выключить компьютер, выйти из офиса и повеситься на первом суку. Чтобы не уподобляться авторам таких сообщений, напишу и то очевидное, что нужно делать. Сообщение об ошибке должно состоять из двух чётких частей: описание самой проблемы и перечисление возможных путей её решения. Например, как оказалось в моём случае, перед удалением свойства нужно было стереть его непустые значения в подключениях - ну так чёрт возьми, напишите об этом. А ещё лучше - вместо кнопки "ОК" всадите в диалог кнопку "стереть непустые значения в подключениях и таки удалить что просили". Дайте человеку выполнять свою работу вместо того, чтобы отгадывать понятные только автору ребусы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 19:54 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
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 ReferenceRestrictions 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. Так что, быть может, и допилят, раз функционал все еще развивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 20:17 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
NULL это больная тема в ORACLE и посему дока по NULL вызывает вопросы. Но ссылка на boolean literals это из серии all poodles are dogs but not all dogs are poodles. Иначе мы придем к тому что: Код: plsql 1. 2. 3. 4. 5. 6. преобразует 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 20:48 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousТак что, быть может, и допилят, раз функционал все еще развивается.Главное определиться куда пилить. А то непонятно, хайтековые парни хотят неявное преобразование или "более конкретное" сообщение об ошибке. В первом случае надо выводить SQL тип литерала, будь то varchar2(0), новый какой-то тип null или что-то еще и к нему применять преобразование. Во втором случае тоже надо какой-то тип, наверное, выводить, ну чтоб была конкретика какой именно не SQL тип. А главное - зачем? Вся истерия ТС из-за работы с литералом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 22:10 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
softwarerПозволю себе вытащить одну свою старую репликуТак как должно выглядеть сообщение так чтоб по-человечески? И должно ли оно вообще быть? Какие в этих случаях дожны быть "правильные сообщения"? Код: 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. Не забываем же еще что ошибки возникают на совершенно разном этапе - компиляция PL/SQL vs выпонение SQL. Надо ли допускать такие вольности? Или все должно отлавливаться на одном этапе? Что я хочу сказать - то, что ошибки должны быть предельно конкретными и максимально упрощающими нахождение проблемного места, но нельзя отметать того факта, что для понимания природы ошибки надо понимание техники работы. softwarerСообщение об ошибке должно состоять из двух чётких частей: описание самой проблемы и перечисление возможных путей её решения.Ага, а еще пару-тройку баек про ошибку, описание best practices как избегать и ссылки на ликбез по всем сопутствующим вопросам. При этом должно быть перечисление ВСЕХ возможных путей решение, ибо если уж мартышка не думает, то нельзя ставить её в тупиковыю ситуацию без рецепта для именно её специфики. softwarerВ результате пользователь чувствует себяЧтоб пользователь лучше себя чувствовал (если речь про пользователя приложения а не его разработчика), то надо в любом случае преобразовывать ошибку в человеческий вид, пользователю эта вся ORA-хрень нафиг не сдалась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 22:12 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopэта вся ORA-хрень нафиг не сдалась. Тут есть сразу несколько аспектов, которые не следует смешивать. 1. Содержательность сообщения об ошибке - собственно, текст сообщения. Он должен быть совершенно различен в зависимости от контекста и "целевой аудитории". Техническому специалисту требуются технические детали в терминах системы, конечному пользователю - в терминах его бизнес-области, как в прокламации softwarer. ORA-XXXXX - это именно сообщения в терминах СУБД, рассчитанные на квалифицированного специалиста. В этом смысле все относительно благополучно, хотя и не без эксцессов. Трактовка же конкретной исключительной ситуации в контексте и терминах бизнес-области - не тема для "ORA-хрени" 2. Собственно, обработка исключительной ситуации. Сколько копий сломано вокруг 'when others'... А между тем именно в этой части система исключений PL/SQL весьма далека от совершенства. В первую голову потому, что разработчик должен по сути угадать какие исключительные ситуации возможны в том или ином модуле. Оттого и популярен "others". Более современные языки этот вопрос решают посредством обязательной декларации возможных исключений на уровне интерфейса программной единицы. Но в PL/SQL этого нет и вряд ли будет - проще язык сменить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 23:25 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousНо в PL/SQL этого нет и вряд ли будет - проще язык сменить.Не смотря на то, что в Oracle хранимки можно писать на Java, .Net, JavaScript/TypeScript, вряд ли удастся переманить народ с несовершенного PL/SQL. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 02:01 |
|
||
|
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousТак что, быть может, и допилят, раз функционал все еще развивается.Это всего лишь следствие того, что More PL/SQL-Only Data Types Can Cross PL/SQL-to-SQL Interface . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 07:53 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39713291&tid=1883365]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 373ms |

| 0 / 0 |
