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

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

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


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

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28496
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

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

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

Откуда: Россия, Москва
Сообщений: 7800
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
Сообщений: 9244
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)
Сообщений: 15438
да и гуя гую рознь

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Если изначально механизм построен на костылях для подпорки рук из жопы, то конечно СУБД кривая.
2 окт 18, 12:30    [21692469]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Oracle Ответить