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

Откуда:
Сообщений: 225
declare 
  lCnt pls_integer;
begin 
   execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using null;
end;


и главное: PLS-00457:"expressions have to be of SQL types"
эээээ!!!? Встречный вопрос: а что, NULL был когда то незнаком в SQL??????

( "... using to_date( null );" естественно работает! )

Протянули это позорище аж до 12.2, как я щас убедился! :-(

P.S. "повбывав бы!"(с)
28 сен 18, 17:25    [21689363]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28278
DBAshnik
и главное
Чем тебе это мешает в практической жизни?
28 сен 18, 17:34    [21689370]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
Elic
DBAshnik
и главное
Чем тебе это мешает в практической жизни?


ну как это чем? Например тем, что когда в "общей кухне" что-то не в порядке, то находишь такую фигню сперва потеряв кучу времени!
Ну и вообще: а чем может "помешать в практической жизни", скажем, авиационный прибор неправильно диагностирующий проблему?
28 сен 18, 17:56    [21689398]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28278
DBAshnik
потеряв кучу времени!
Дитя гуя?
+
   execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using null;
                                                                                        *
ERROR at line 4:
ORA-06550: line 4, column 89:
28 сен 18, 18:03    [21689406]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
Elic,

в "общей кухне" всё строится в run-time и очень громоздко и запутано. Да и вообще спич не об этом! А о явном неадеквате оракл-диагностики!
28 сен 18, 18:14    [21689422]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 7775
SQL> declare 
  2    lCnt pls_integer;
  3  begin 
  4     execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using TO_DATE(null);
  5  end;
  6  /

PL/SQL procedure successfully completed.
28 сен 18, 18:25    [21689434]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9113
DBAshnik
Протянули это позорище аж до 12.2, как я щас убедился! :-(


NULL типа не имеет, так-что "have to be of SQL types" вполне уместен. Ну не хочет Oracle заморачиваться implicit conversions.

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

Откуда: Гадюкино-2 (City)
Сообщений: 15428
да и гуя гую рознь

К сообщению приложен файл. Размер - 97Kb
28 сен 18, 18:31    [21689444]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16771
DBAshnik
в "общей кухне" всё строится в run-time и очень громоздко и запутано.

Так значит надо систематизировать и распутывать.
К примеру, ввести правило, по которому все параметры для анонимного динамически генерируемого pl/sql блока должны декларироваться:
declare 
  lCnt pls_integer;
  lDt date := null;
--  lDt date := :bind_dt_param;
--  lDt date := <placeholder>;
begin 
   execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using lDt;
end;
28 сен 18, 19:41    [21689495]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5142
SY
DBAshnik
Протянули это позорище аж до 12.2, как я щас убедился! :-(


NULL типа не имеет, так-что "have to be of SQL types" вполне уместен. Ну не хочет Oracle заморачиваться implicit conversions.

SY.
Обычно для работы implicits требуется, чтоб было выполнено type inference для всех сотовляющих.
Только тогда можно на основании опредленных правил вызвать implicits когда понятно из чего во что конвертируем.
Так что в данном конкретном случае заморачиваться Ораклу особого смысла и нет.

Другой вопрос, что тип вроде может быть выведен, но он получается очень "специфическим"
SQL> create or replace view v as select null x, cast(null as varchar2(1)) y from dual;

View created.

SQL> select column_name, data_type, data_length from user_tab_columns where table_name = 'V';

COLUMN_NAM DATA_TYPE  DATA_LENGTH
---------- ---------- -----------
X          VARCHAR2             0
Y          VARCHAR2             1

SQL> select cast(null as varchar2(0)) from dual;
select cast(null as varchar2(0)) from dual
                              *
ERROR at line 1:
ORA-01723: zero-length columns are not allowed
28 сен 18, 20:08    [21689507]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
UDW
Member

Откуда: Самара
Сообщений: 1091
DBAshnik,

А ничего, что в Вашем сравнении используется запрещннная комбинация "> null"?
В доке по SQL четко указывается, что следует использовать "is not null".
Так чт это не баг.
30 сен 18, 07:45    [21690217]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
-2-
Member

Откуда:
Сообщений: 13830
UDW
А ничего, что в Вашем сравнении используется запрещннная комбинация "> null"?
Тебе нельзя писать where поле>123, если поле nullable?
30 сен 18, 11:29    [21690288]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SkilledJunior
Member

Откуда:
Сообщений: 125
null null-у рознь
execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using '';


UDW
используется запрещннная комбинация "> null"?

Кем запрещенная?
30 сен 18, 12:05    [21690307]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SkilledJunior
Member

Откуда:
Сообщений: 125
DBAshnik
Протянули это позорище аж до 12.2, как я щас убедился! :-(


Ты используешь переменную :xDt, она как то объявлена?

Тебя же не удивляет, что такой код не работает:
declare 
  xDt null;
begin ...


Если ты собираешь execute immediate динамически, дата будет литералом, отсутствующая дата станет '', как там оказалось слово null?
30 сен 18, 13:12    [21690347]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
UDW
Member

Откуда: Самара
Сообщений: 1091
SkilledJunior,

А почитать документацию религия не позволяет?
автор
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 Represents NULL in USING Clause" on page 7-4.
Oracle® Database PL/SQL Language Reference 11g Release 2 (11.2) E25519-13
1 окт 18, 05:04    [21690680]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1666
DBAshnik,

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

Откуда:
Сообщений: 225
SkilledJunior
null null-у рознь
execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using '';


UDW
используется запрещннная комбинация "> null"?

Кем запрещенная?


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

Откуда:
Сообщений: 225
SY
Ну не хочет Oracle заморачиваться implicit conversions.SY.


и в самом деле! Рубя И ТАК УЖЕ столь громадную "капусту" со всего мира за лицензии, можно уже просто и не захотеть сделать жизнь своих потребителей хоть немного удобнее! :-(
1 окт 18, 11:20    [21690862]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28278
DBAshnik
хоть немного удобнее!
Сколько экспрессии для бури в рюмке.
1 окт 18, 12:06    [21690961]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
-2-
Member

Откуда:
Сообщений: 13830
DBAshnik
жизнь своих потребителей хоть немного удобнее
По мне, так expressions have to be of SQL types говорит о проблеме яснее, чем вариации ошибок inconsistent datatypes.
1 окт 18, 12:40    [21691009]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SkilledJunior
Member

Откуда:
Сообщений: 125
UDW
SkilledJunior,

А почитать документацию религия не позволяет?
[/quot]

Иии, где же там написано о запрещенной комбинации:
UDW
А ничего, что в Вашем сравнении используется запрещннная комбинация "> null"?
1 окт 18, 23:09    [21691967]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SkilledJunior
Member

Откуда:
Сообщений: 125
DBAshnik
и в самом деле! Рубя И ТАК УЖЕ столь громадную "капусту" со всего мира за лицензии, можно уже просто и не захотеть сделать жизнь своих потребителей хоть немного удобнее! :-(


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

Если бы разработчик заморочился еще чуть чуть, то он бы прочитал в доке:
Example 7-7 Uninitialized Variable Represents NULL in USING Clause
1 окт 18, 23:25    [21691974]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9113
SkilledJunior
Если бы разработчик заморочился еще чуть чуть, то он бы прочитал в доке:
Example 7-7 Uninitialized Variable Represents NULL in USING Clause


Да суть вообще-то не в этом. Какой смысл писать EXECUTE IMMEDIATE с литералом (невaжно NULL не NULL) в качестве bind value?

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

Откуда:
Сообщений: 225
SY
SkilledJunior
Если бы разработчик заморочился еще чуть чуть, то он бы прочитал в доке:
Example 7-7 Uninitialized Variable Represents NULL in USING Clause


Да суть вообще-то не в этом. Какой смысл писать EXECUTE IMMEDIATE с литералом (невaжно NULL не NULL) в качестве bind value?

SY.


а тот что этот литерал может подменятся внутри ява кода мысль не посещала? ;-)
2 окт 18, 12:17    [21692443]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
DBAshnik
литерал может подменятся внутри ява кода

Если изначально механизм построен на костылях для подпорки рук из жопы, то конечно СУБД кривая.
2 окт 18, 12:30    [21692469]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
-2-
Member

Откуда:
Сообщений: 13830
DBAshnik
SY
Да суть вообще-то не в этом. Какой смысл писать EXECUTE IMMEDIATE с литералом (невaжно NULL не NULL) в качестве bind value?
а тот что этот литерал может подменятся внутри ява кода мысль не посещала? ;-)
Динамически формировать plsql из джавы, который динамически выполняет sql. Есть какие-то обоснования для извращений?
2 окт 18, 12:38    [21692483]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9113
DBAshnik
а тот что этот литерал может подменятся внутри ява кода мысль не посещала? ;-)


Ты знаешь, воображение у меня воспаленное, но чтобы настолько? Даже если в чьих-то отравленных нарзаном мозгaх и возникнет мысль лепить динамический SQL в java, то я по наивности бы ожидал:

execute immediate 'select count(*) from dual where sysdate > literal' into lCnt


Но

execute immediate 'select count(*) from dual where sysdate > :bind' into lCnt using literal


это венец творенья. Пишем косяк а затем его исправляем косяком.

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

Откуда:
Сообщений: 225
SY

это венец творенья. Пишем косяк а затем его исправляем косяком.

SY.


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

Откуда: Middlebury, CT USA
Сообщений: 9113
DBAshnik
???? обоснуй


Косяк 1: Зачем в java генерирорать динамический SQL?
Косяк 2: Косяк 2 использование литeрала в качестве bind переменной.

Почему не обыкновенный:

SelectStatement = connection.prepareStatement("select count(*) from dual where sysdate > ?");
SelectStatement.setDate(1,JavaDateVariable); 


Тога и косяк 2 не потребуется.

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

Откуда: Middlebury, CT USA
Сообщений: 9113
Кстати, есть еще и косяк 3. Если java генерит

SelectStatement = connection.prepareStatement("execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using каждый-раз-новый-литерал";


то подумай над shared pool.

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

Откуда: Москва
Сообщений: 16771
SY
Зачем в java генерирорать динамический SQL?

Есть смешной вариант, когда шаблон SQL-я прилада тянет из специальной таблички-репозитория, а параметры запихивает в текст реплейсом placeholder-ов.
Вариация на тему метамоделей.
Тогда сами шаблоны пишут специально (не)обученные человеки.
И да, библиотечному кэшу в этом варианте бывает слегка дурно при высокой интенсивности запросов.
2 окт 18, 17:53    [21693072]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 53869
Блог
Сообщение, конечно, не самое дружественное. С другой стороны, имея кучу реальных проблем, тратить время и силы на улучшение поведения в изначально нездоровой ситуации - глупо. Ну а наплодив такую хрень и выпустив - судя по "куче времени" - из-под контроля её управляемость, видеть причину всех несчастий в оракловой диагностике - лично я это называю "Перекладывать вину со своей головы на здоровую".
2 окт 18, 21:27    [21693367]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
SY

Почему не обыкновенный:

SelectStatement = connection.prepareStatement("select count(*) from dual where sysdate > ?");
SelectStatement.setDate(1,JavaDateVariable); 


...
SY.


потому, что это Talend! И там я такое делать не могу, к сожалению (в данном проекте, по крайней мере). А динамический SQL-там по любому нужен, по другим причинам, в которые я не хочу углубляться!

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

Откуда:
Сообщений: 13830
DBAshnik
потому, что это Talend!
не переубедил.
DBAshnik
Нежелание ораклом сделать интуитивно-удобно
какого типа должен получиться бинд значения неизвестного типа?
4 окт 18, 15:31    [21695375]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
-2-
потому, что это Talend!
не переубедил.

большой опыт работы с _нашими_ проектами на Talend?? ;-)

DBAshnik
Нежелание ораклом сделать интуитивно-удобно
какого типа должен получиться бинд значения неизвестного типа?[/quot]
не знаю! Иначе б я в Оракл работал, наверное ;-) Интуиция подсказывает, что есть сравнивается, например, с date, то и подставляй - будь любезен - to_date() за человека автоматически, или это уже про запредельный hi-tec по твоему? ;-)
А то это пока что уровень комфорта из прошлого века ( когда ещё телепрограммы плоскогубцами переключали. ))) И ничё, выживали ж как-то! :-)))) )
4 окт 18, 16:17    [21695457]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9113
DBAshnik
потому, что это Talend!


C Talend не знаком, но если нет другого выхода кроме dynamic SQL, то почему не:

declare 
  lCnt pls_integer;
  lDt date := ...; -- тут и вставляй свой литерал
begin 
   execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using lDt;
end;


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

Откуда:
Сообщений: 13830
DBAshnik
-2-
какого типа должен получиться бинд значения неизвестного типа?
не знаю! Иначе б я в Оракл работал, наверное ;-) Интуиция подсказывает, что есть сравнивается, например, с date, то и подставляй - будь любезен - to_date()
Когда напишешь свою СУБД, реализуешь интуитивное распознавание типов выражений по строке динамического sql. И про возможность указать в строке "хинты" типа to_date() не забудь, а то ведь одни и те же операции могут выполняться с разными типами.
4 окт 18, 16:56    [21695505]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9113
Будь моя воля я бы вообще запретил USING литeралы в EXECUTE IMMDEDIATE.

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

Откуда:
Сообщений: 241
DBAshnik
Интуиция подсказывает, что есть сравнивается, например, с date, то и подставляй - будь любезен - to_date() за человека автоматически


Не дай бог! Лучше разбираться с ошибками чем со слабо прогнозируемым результатами. Как по мне так в oralce слишком много неявных преобразований типов.
4 окт 18, 17:07    [21695517]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 53869
Блог
SY
Будь моя воля я бы вообще запретил USING литeралы в EXECUTE IMMDEDIATE

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

Откуда: 127.0.0.1
Сообщений: 53869
Блог
XMLer
Не дай бог! Лучше разбираться с ошибками чем со слабо прогнозируемым результатами. Как по мне так в oralce слишком много неявных преобразований типов.

Угу. Это вечный источник радости.

К сообщению приложен файл. Размер - 1Kb
4 окт 18, 17:18    [21695529]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 53869
Блог
А ещё лучше как-нибудь так:

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

Откуда:
Сообщений: 225
softwarer
XMLer
Не дай бог! Лучше разбираться с ошибками чем со слабо прогнозируемым результатами. Как по мне так в oralce слишком много неявных преобразований типов.

Угу. Это вечный источник радости.


??? это где такие бажищи!?! (версия? Патчи?) 53 естественно лажа, так как тип определяет _оператор_ (в данном случае "+") а не операнд!

у меня, хоть на 11g хоть на 12с:

select 5 + '3' from dual
--
8

select 5 - '3' from dual
--
2
4 окт 18, 17:33    [21695548]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
softwarer
А ещё лучше как-нибудь так:


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

Откуда: Москва
Сообщений: 16771
SY
declare 
  lCnt pls_integer;
  lDt date := ...; -- тут и вставляй свой литерал
begin 
   execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using lDt;
end;


SY.

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

Откуда: 127.0.0.1
Сообщений: 53869
Блог
DBAshnik
??? это где такие бажищи!?! (версия? Патчи?)

В браузере F12 нажми. Это javascript-овая консоль. В оракле есть свои замечательные моменты. Ну вот хотя бы попробуй угадать результат следующего:

create table t$1(i integer, j integer);
insert into t$1 values (1, 1);
insert into t$1 values (2, 2);
create table t$2 (i integer, j varchar2(10));
insert into t$2 values (1, '1');
insert into t$2 values (3, 'foo');
select * from t$1, t$2 where t$1.i = t$2.i and t$1.j = t$2.j;
4 окт 18, 17:40    [21695563]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
тоже и в NDS! Ответ только 7 (и в 11g и в 12с)

declare
  lRslt pls_integer;
begin
  --execute immediate 'select :x1 + :x2 - :x3 from dual' into lRes using 5, '3', '1';
  execute immediate 'select :x1 - :x2 + :x3 from dual' into lRslt using 5, '1', '3';
  dbms_output.put_line ( 'lRslt: ' || lRslt );
end;      


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

Откуда:
Сообщений: 225
andrey_anonymous
К примеру, ввести правило, по которому все параметры для анонимного динамически генерируемого pl/sql блока должны декларироваться:


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

Откуда: Москва
Сообщений: 16771
softwarer
попробуй угадать результат

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

Откуда: 127.0.0.1
Сообщений: 53869
Блог
andrey_anonymous,

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

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

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

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

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

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


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

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

Откуда: sqlmdx.net
Сообщений: 5142
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

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

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

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


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

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

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

Откуда: Москва
Сообщений: 16771
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

Откуда:
Сообщений: 225
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

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

Откуда:
Сообщений: 225
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

Откуда:
Сообщений: 225
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

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

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

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28278
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
Сообщений: 53869
Блог
DBAshnik
Хотя, столь "сложнейший нечеловеческий хайтек" могли, бы наверное и запаять

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

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

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

Откуда: Москва
Сообщений: 16771
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

Откуда: Москва
Сообщений: 16771
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

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

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

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

Откуда: 127.0.0.1
Сообщений: 53869
Блог
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

Откуда: Москва
Сообщений: 16771
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
Сообщений: 9113
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
Сообщений: 5142
andrey_anonymous
Так что, быть может, и допилят, раз функционал все еще развивается.
Главное определиться куда пилить.
А то непонятно, хайтековые парни хотят неявное преобразование или "более конкретное" сообщение об ошибке.

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

Откуда: sqlmdx.net
Сообщений: 5142
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

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

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28278
andrey_anonymous
Так что, быть может, и допилят, раз функционал все еще развивается.
Это всего лишь следствие того, что More PL/SQL-Only Data Types Can Cross PL/SQL-to-SQL Interface.
5 окт 18, 07:53    [21695951]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
DBAshnik
1. Видим в using стоит ..., null,...
2. Видим тип колонки/переменной для :x - он, допустим, date! ( или number или char и т.д)


execute immediate ' ... to_char(:x) ...' using null 

Какой тип?
5 окт 18, 11:35    [21696136]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
Ответ "мы не применяем функции к переменным в динамическом запросе" не рассматриваю. Если решение уже сделано проктологическо-ортопедическим методом, то и это тоже обязательно встретится.
5 окт 18, 11:38    [21696143]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
Elic
DBAshnik
2. Видим тип колонки/переменной для :x
Неизлечимый кретинизм.
+
select :x from dual
union all
select :y from dual


ну хорошо, умник, поясни (даже не мне! а любому логически мыслящему челу, начинающему изучать оракл!). Почему конструкция типа

SELECT * FROM (
  select :x as Z from dual
    union all
  select :y as Z from dual
) WHERE Z IS NULL


не требует явного приведения типа навроде "TO_CHAR( Z ) IS NULL" ( TO_DATE(), TO_NUMBER() и т.п. ).
А в NDS это конвертация обязательна? ГДЕ ТУТ ЛОГИКА ТО????
Если все эти конвертирования TO_DATE(null), TO_NUMBER(null) (и тп.) дают И ТАК в итоге по любому NULL - то только я один вижу тут абсолютно ненужную "бюрократию"?!?

Я понимаю, конечно, что к этому тут многие видать привыкли за долгие века бурлацкого программисткого труда... Но есть же и такая вещь как прогресс всё-таки! А то уже пора вводить новый хеш-тэг #ДедыКонвертили ))))

P.S. и ещё раз, _последний раз_ повторяю: Я НЕ работаю в Оракл!!! Исходников этих в глаза не видел (подозреваю, что равно как и большинство тут дискутирующих, ибо не опенсоурс! ) Но _СИЛЬНО СОМНЕВАЮСЬ_ что это невозможно технически! Просто тупо забивают на удобство разработчика! Обычный унылый конформизм, короче.
5 окт 18, 11:42    [21696148]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
andrey_anonymous
...

Так что, быть может, и допилят, раз функционал все еще развивается.


во! Ну как и во многих других кривоватых ora-фишках: есть движения таки (от версии к версии)! Но меееееедленное, блин! :-(

P.S. банально, но как тут не вспомнить: "если тебе плюют в спину, значит ты впереди"(с) ! ;-)
5 окт 18, 11:45    [21696157]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
-2-
Member

Откуда:
Сообщений: 13830
DBAshnik
И ТАК в итоге по любому NULL
"любому логически мыслящему" это не очевидно.
5 окт 18, 11:47    [21696163]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
DBAshnik
как тут не вспомнить: "если тебе плюют в спину, значит ты впереди"(с)

Так ты, это, не плюй в спины.
5 окт 18, 11:52    [21696179]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
DBAshnik,

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

create or replace package tst is
  function f(x number) return number;
  function f(x date) return date;
end;
/

create or replace package body tst is
  function f(x number) return number is
  begin
    return 3.14-nvl(x,1.07);
  end f;
  
  function f(x date) return date is
  begin
    return nvl(x, sysdate) + interval '1' day;
  end f;
end;
/

declare 
  v anydata;
begin
  execute immediate 'select tst.f(:x) xx from dual' into v using null;
--  execute immediate 'select tst.f(:x) xx from dual' into v using '20181005';
end;
/
5 окт 18, 12:01    [21696197]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

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


отлично-отлично! Вообще супер! Спасибо огромное за мего-наглядный пример!!! Честно говоря, меня уже давно подмывает написать серьёзный технико-психологический трактат о типичных психологических проблемах в АйТи. (не в последнюю очередь затронув тему почему, по отзывам многочисленных профессиональных психологов, у ойтишной братии, при прочих равных, зачастую так скверно обстоят дела с противоположным полом! ;-) ). Это вот именно и проблема многих фриков-умников: по настоящему умный человек никогда не будет лезть в технические дебри за аргументацией, высокомерно ожидая от всех и каждого своего высокого уровня, но постарается спуститься на уровень собеседника, сумеет взглянуть на вещи _его_(!) глазами и терпеливо сможет растолковать порой даже самую сложную проблему _простым_ языком аппелируя не консервативному "ну вот так есть и всегда так было" лишь к логике и здравому смыслу.
5 окт 18, 12:02    [21696205]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16771
DBAshnik
Почему конструкция типа

SELECT * FROM (
  select :x as Z from dual
    union all
  select :y as Z from dual
) WHERE Z IS NULL

не требует явного приведения типа навроде "TO_CHAR( Z ) IS NULL" ( TO_DATE(), TO_NUMBER() и т.п. ).

прибейте x и y переменные двух типов, между которыми нет implicit conversion, скажем, number и date - получите ответ.
DBAshnik
А в NDS это конвертация обязательна? ГДЕ ТУТ ЛОГИКА ТО????

1. Не конвертация.
Определение типа переменной привязки.
Вашему запросу (выше) без привязанных типизованных переменных тоже ничего не светит.
2. Не стоит путать SQL и PL/SQL.
В SQL никакого NDS нет - это конструкция PL/SQL (и компонент "FACILITY" кода исключения, положившего начало этому топику, какбэ намекает: не ORA, а PLS).
5 окт 18, 12:03    [21696209]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
DBAshnik
постарается спуститься на уровень собеседника

Ты уверен, что на твой уровень стоит спускаться?

Объяснять бушмену почему нельзя попасть стрелой в Солнце, долгое, нудное и почти бессмысленное занятие, требующее сначала дать ему образование на уровне достаточном для восприятия хотя бы терминологии объясняющего.

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

Откуда: Москва
Сообщений: 16771
DBAshnik
и терпеливо сможет растолковать

Постарайтесь взглянуть на проблему с другой стороны: "растолковать" что-либо возможно только тому, кто готов воспринимать пусть даже самые разжеванные и упрощенные объяснения, думать и тем самым "расти над собой".
Растолковать же что-либо человеку, упорствующему в собственной интерпретации фактов и не готовому осмысливать услышанное, практически невозможно.
5 окт 18, 12:09    [21696224]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28278
DBAshnik
Но _СИЛЬНО СОМНЕВАЮСЬ_ что это невозможно технически!
Это от скудоумия.
5 окт 18, 12:14    [21696229]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
env
DBAshnik,

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

create or replace package tst is
  function f(x number) return number;
  function f(x date) return date;
end;
/

create or replace package body tst is
  function f(x number) return number is
  begin
    return 3.14-nvl(x,1.07);
  end f;
  
  function f(x date) return date is
  begin
    return nvl(x, sysdate) + interval '1' day;
  end f;
end;
/

declare 
  v anydata;
begin
  execute immediate 'select tst.f(:x) xx from dual' into v using null;
--  execute immediate 'select tst.f(:x) xx from dual' into v using '20181005';
end;
/


ну очевидно, что в том редком случае ( не ошибусь, думаю, что проблема вызова перегруженых функций пакета это даже не 0.1% процента всех случаев применения NDS + "using" !!! ) , можно и выбросить _ясную и понятную_ error-мессагу, что мол " function ambiguously defined" (по аноглогии с пресловутым "column ambiguously defined" , которая возникает, как известно, отнюдь не во всех случаях когда не указан квалификатор таблицы и т.п. myTbl.MyColumn, а лишь при необходимости )

Я устал говорить: я НЕ ЗНАЮ как конкретно запаять это в оракле. ( когда меня устроят туда на летние сезонные подработки, сообщу вам тут... ))) если разрешат... ))) ) Но я знаю одно: "кто хочет что-то сделать - ищет средства для этого! Кто ничего не хочет - ищет причины"(с)
5 окт 18, 12:14    [21696230]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
DBAshnik
Кто ничего не хочет - ищет причины

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

Откуда: Москва
Сообщений: 16771
env
тебе, паровозу прогресса

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

Откуда:
Сообщений: 225
env
DBAshnik
постарается спуститься на уровень собеседника

Ты уверен, что на твой уровень стоит спускаться?

Объяснять бушмену почему нельзя попасть стрелой в Солнце, долгое, нудное и почти бессмысленное занятие, требующее сначала дать ему образование на уровне достаточном для восприятия хотя бы терминологии объясняющего.

Но ты продолжай винить всё вокруг в том, что твоя стрела падает на землю и не сообщает истинной причины, почему она не долетела.


ну я же говорю: ВЫСОКОМЕРИЕ!
5 окт 18, 12:17    [21696235]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
-2-
DBAshnik
И ТАК в итоге по любому NULL
"любому логически мыслящему" это не очевидно.


то есть какая то из функций TO_DATE(null), TO_NUMBER(null) может дать в результате НЕ Null ?!??! Вот отсюда по-подробнее пожалуйста? ;-)
5 окт 18, 12:21    [21696244]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
DBAshnik
ну я же говорю: ВЫСОКОМЕРИЕ!

Да, именно, твоё высокомерие в убеждении, что твоя точка зрения единственно верная, без желания понять отвечающих и подумать - удручает.
5 окт 18, 12:23    [21696248]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
-2-
Member

Откуда:
Сообщений: 13830
DBAshnik
то есть какая то из функций TO_DATE(null), TO_NUMBER(null) может дать в результате НЕ Null ?
В оралке не только нет нетипизованных переменных, но нетипизованных колонок. Какого типа должен получиться результат юниона разных типов?
Или выражения select sysdate-:var ?
5 окт 18, 12:26    [21696252]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16771
DBAshnik
может дать в результате НЕ Null ?!??! Вот отсюда по-подробнее пожалуйста? ;-)

Null Null-у Null
Еще раз, мееедленно: берете свой тесткейс и прибиваете x и y типов number и date.
Инициализируете NULL-ами.
Выполняете.
Дальше в идеале Вы должны осознать, что NULL - это особое ТИПИЗИРОВАННОЕ не-значение, хотя и представленное одним и тем же литералом, независимо от типа.
Собственно, если бы "ленивые программисты oracle" не вводили бы единое ключевое слово/литерал NULL, а заставили бы писать "null_date", "null_number" и т.д., то у Вас путаницы бы не случилось и не пришлось бы осваивать сложные материи null-полиморфизма :)
5 окт 18, 12:32    [21696263]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
-2-
DBAshnik
то есть какая то из функций TO_DATE(null), TO_NUMBER(null) может дать в результате НЕ Null ?
В оралке не только нет нетипизованных переменных, но нетипизованных колонок. Какого типа должен получиться результат юниона разных типов?
Или выражения select sysdate-:var ?


вы опять заводите "рака за камень" уходя в детали. Мой спич _ЛИШЬ ТОЛЬКО_ о том, что если человече в состоянии вместо "null" подставить "to_date(null)" (ну или что там подходит по смыслу) то это же действо в состоянии сделать и fucking-computer в 21м веке!!!!!!! Даже не нося при этом гордое звание искусственного интеллекта! ;-)))
5 окт 18, 12:32    [21696264]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16771
DBAshnik
то это же действо в состоянии сделать и fucking-computer в 21м веке!!!!!!! Даже не нося при этом гордое звание искусственного интеллекта! ;-)))

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

Откуда:
Сообщений: 225
andrey_anonymous
env
тебе, паровозу прогресса

Неудачно, кмк.
Сферический Паровоз в вакууме - это нечто, способное что-то двигать куда-то в даль.
Персонаж же, созданный для нас ТС - типовой потребитель. Слегка перефразируя классиков - этакий "кадавр, неудовлетворенный ошибочно".


И да! Я таки сознательно (откинув все свои скилзы) становлюсь сейсас на позиции типового потребителя! Совершенно этого не стесняясь! Убеждён, что по настоящему хороший айтишник _обязан_ уметь это делать! Делать для юзера (платяшего бабки!) ту самую пресловутую кнопку "сделай мне всё зае...сь!" ))) А не входить блин в положение его величества архитектора софта и высокомерно чморя невежей-юзеров за непонимание/незнание всех тонкостей механизма переключения телевизора плоскогубцами! )))))
5 окт 18, 12:39    [21696272]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
-2-
Member

Откуда:
Сообщений: 13830
DBAshnik
-2-
Или выражения select sysdate-:var ?

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

Откуда:
Сообщений: 225
andrey_anonymous

Однажды такой интеллект появится и Вы, если доживете, потеряете работу.
Потому предлагаю Вам слегка остыть в своем потребительском запале.


гы гы гы! ))) Ну спасибо хоть за откровенность! )))
Сплошные неолуддиты тут, походу )))))
5 окт 18, 12:41    [21696275]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
DBAshnik
А не входить блин в положение его величества архитектора софта и высокомерно чморя невежей-юзеров за непонимание/незнание всех тонкостей механизма переключения телевизора плоскогубцами!

Так перестань переключать телевизор плоскогубцами, чморя невежей-кодеров за твоё нежелание сделать хорошо без динамического sql и литералов в java-коде.
5 окт 18, 12:51    [21696287]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
И, объясни, чем твои вопли по поводу высокомерия и нежелания делать хорошо для тебя, отличаются в твоей же позиции:
DBAshnik
потому, что это Talend! И там я такое делать не могу, к сожалению (в данном проекте, по крайней мере).

Что ж ты себе тут не ответил
DBAshnik
кто хочет что-то сделать - ищет средства для этого!
?
5 окт 18, 12:55    [21696296]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16771
DBAshnik
Я таки сознательно (откинув все свои скилзы) становлюсь сейсас на позиции типового потребителя!

Ок. Принято.
Как Потребитель, Вы обязаны выполнять инструкцию по эксплуатации, в противном случае поставщик товара не несет ответственности и отказывает в гарантийном обслуживании.
В инструкции особо указано, что использовать null в NDS указанным образом нельзя.
Претензия отклонена, вопрос закрыт.
5 окт 18, 13:48    [21696362]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5142
DBAshnik
ГДЕ ТУТ ЛОГИКА ТО????
В запросе тип выводится на основании запроса (и кстати бывает когда неявное преобразование не может быть выполнено, да!), в динамике тип выводится на основании того что передается.
Не на основании запроса. Это достаточно простые слова для тебя?
Ты же понимаешь, что перед выполнением надо связать, а перед этим надо знать что связываем.
Как я уже раза три тут писал можно усложнять и выводить varchar2(0) или что-то еще, но зачем? Вероятно это породит еще больше проблем.
DBAshnik
Честно говоря, меня уже давно подмывает написать серьёзный технико-психологический трактат о типичных психологических проблемах в АйТи.
С нетерпением жду. Надеюсь ты еще сделаешь презентацию. Не забудь упомянуть о персонажах, которые ставят в конце предложения "!!!!", "????", ")))))" и пишут капсом.
DBAshnik
"сделай мне всё зае...сь!"
Ну так чего ты вместо того, чтоб так делать, пишешь говнокод и потом размазываешь по форуму фрустрацию обвиняя всех и вся в своей неспособности к дебагу?
5 окт 18, 15:04    [21696458]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
andrey_anonymous
и отказывает в гарантийном обслуживании.

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

Откуда:
Сообщений: 225
dbms_photoshop
а перед этим надо знать что связываем.

Cвязываем конкретно NULL ! "Это достаточно простые слова для тебя?"(c) ;-)

dbms_photoshop
Не забудь упомянуть о персонажах, которые ставят в конце предложения "!!!!", "????", ")))))" и пишут капсом.

я всё-таки начну с безэмоциональных шизоидных фриков!!! ;-)
5 окт 18, 15:37    [21696511]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
DBAshnik
Member

Откуда:
Сообщений: 225
вообщем, думаю, мою позицию все услышали, кто _хотел_! ;-)
Я услышал ваши менения.
И поскольку пошло совсем уже беспредметное препирательство, то тему закрываю.
Всем хороших выходных! :-)
5 окт 18, 15:39    [21696513]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16771
DBAshnik
andrey_anonymous
и отказывает в гарантийном обслуживании.

разве речь идёт о гарантийном обслуживании???

В роли потребителя у Вас всего три пути:
1. Если речь об исправлении недостатка продукта - то это запрос на обслуживание, SR.
Как потребитель, Вы нарушили инструкцию и будете 100% завернуты.
2. Если речь идет о расширении функционала - то это запрос на доработку, ER.
Попробуйте оформить, оплатить (по отдельному договору, ессно) - и будете наслаждаться "хайтеком".
3. Сменить поставщика.
5 окт 18, 15:50    [21696533]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
SkilledJunior
Member

Откуда:
Сообщений: 125
DBAshnik,

Когда ты объявляешь переменную, ты должен указать ее тип, также ты можешь сказать компилятору - определи тип по типу первого значения присваиваемому этой переменной, но если первое значение типа не имеет, сколько памяти должно быть выделено под хранение значения переменной и какого она типа?
5 окт 18, 15:54    [21696539]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5847
DBAshnik
то тему закрываю
Ждём следующего поста "Я **** дорогая редакция! (в очередной раз от невозможности закрыть тему на sql.ru)"

DBAshnik
Я услышал ваши менения.
И поскольку пошло совсем уже беспредметное препирательство

Перевожу: не читал, но осуждаю.

Находясь на позиции потребителя ты требуешь сделать удобное для тебя, при этом свою систему с позиции разработчика менять не хочешь. Удобно.
5 окт 18, 16:16    [21696567]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5142
DBAshnik
Cвязываем конкретно NULL ! "Это достаточно простые слова для тебя?"(c) ;-)
Слова вроде простые, но логика/необходимость видится, вроде, только тебе.
Замени в своей генерилке null на две кавычки и будь счастлив.
5 окт 18, 16:24    [21696582]     Ответить | Цитировать Сообщить модератору
 Re: Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1666
DBAshnik,

Не надо откидывать свои "скилзы", в приличном обществе это не принято!
Еще, как потребитель, потребуй реализации деления на ноль вместо непонятного ORA-01476 и косинус равным девять с половиной.
6 окт 18, 15:13    [21697024]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5      [все]
Все форумы / Oracle Ответить