Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках) / 25 сообщений из 112, страница 1 из 5
28.09.2018, 17:25
    #39710030
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
Код: plsql
1.
2.
3.
4.
5.
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. "повбывав бы!"(с)
...
Рейтинг: 0 / 0
28.09.2018, 17:34
    #39710035
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnikи главноеЧем тебе это мешает в практической жизни?
...
Рейтинг: 0 / 0
28.09.2018, 17:56
    #39710055
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
ElicDBAshnikи главноеЧем тебе это мешает в практической жизни?

ну как это чем? Например тем, что когда в "общей кухне" что-то не в порядке, то находишь такую фигню сперва потеряв кучу времени!
Ну и вообще: а чем может "помешать в практической жизни", скажем, авиационный прибор неправильно диагностирующий проблему?
...
Рейтинг: 0 / 0
28.09.2018, 18:03
    #39710063
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnikпотеряв кучу времени!Дитя гуя?
Код: plsql
1.
2.
3.
4.
   execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using null;
                                                                                        *
ERROR at line 4:
ORA-06550: line 4, column 89:

...
Рейтинг: 0 / 0
28.09.2018, 18:14
    #39710072
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
Elic,

в "общей кухне" всё строится в run-time и очень громоздко и запутано. Да и вообще спич не об этом! А о явном неадеквате оракл-диагностики!
...
Рейтинг: 0 / 0
28.09.2018, 18:25
    #39710081
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
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.
...
Рейтинг: 0 / 0
28.09.2018, 18:30
    #39710085
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnikПротянули это позорище аж до 12.2, как я щас убедился! :-(


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

SY.
...
Рейтинг: 0 / 0
28.09.2018, 18:31
    #39710087
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
да и гуя гую рознь
...
Рейтинг: 0 / 0
28.09.2018, 19:41
    #39710111
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnikв "общей кухне" всё строится в run-time и очень громоздко и запутано.
Так значит надо систематизировать и распутывать.
К примеру, ввести правило, по которому все параметры для анонимного динамически генерируемого pl/sql блока должны декларироваться:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
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;
...
Рейтинг: 0 / 0
28.09.2018, 20:08
    #39710119
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
SYDBAshnikПротянули это позорище аж до 12.2, как я щас убедился! :-(


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

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

Другой вопрос, что тип вроде может быть выведен, но он получается очень "специфическим"
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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
...
Рейтинг: 0 / 0
30.09.2018, 07:45
    #39710450
UDW
UDW
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnik,

А ничего, что в Вашем сравнении используется запрещннная комбинация "> null"?
В доке по SQL четко указывается, что следует использовать "is not null".
Так чт это не баг.
...
Рейтинг: 0 / 0
30.09.2018, 11:29
    #39710477
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
UDWА ничего, что в Вашем сравнении используется запрещннная комбинация "> null"?Тебе нельзя писать where поле>123, если поле nullable?
...
Рейтинг: 0 / 0
30.09.2018, 12:05
    #39710486
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
null null-у рознь
Код: plsql
1.
execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using '';



UDWиспользуется запрещннная комбинация "> null"?
Кем запрещенная?
...
Рейтинг: 0 / 0
30.09.2018, 13:12
    #39710506
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnikПротянули это позорище аж до 12.2, как я щас убедился! :-(

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

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



Если ты собираешь execute immediate динамически, дата будет литералом, отсутствующая дата станет '', как там оказалось слово null?
...
Рейтинг: 0 / 0
01.10.2018, 05:04
    #39710709
UDW
UDW
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
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
...
Рейтинг: 0 / 0
01.10.2018, 09:56
    #39710773
jan2ary
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnik,

Люди склонны перекладывать вину за собственное невежество на других, например, на производителя ПО...
...
Рейтинг: 0 / 0
01.10.2018, 11:17
    #39710813
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
SkilledJuniornull null-у рознь
Код: plsql
1.
execute immediate 'select count(*) from dual where sysdate > :xDt  ' into lCnt using '';



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

:-))))))
...
Рейтинг: 0 / 0
01.10.2018, 11:20
    #39710816
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
SY Ну не хочет Oracle заморачиваться implicit conversions.SY.

и в самом деле! Рубя И ТАК УЖЕ столь громадную "капусту" со всего мира за лицензии, можно уже просто и не захотеть сделать жизнь своих потребителей хоть немного удобнее! :-(
...
Рейтинг: 0 / 0
01.10.2018, 12:06
    #39710846
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnikхоть немного удобнее!Сколько экспрессии для бури в рюмке.
...
Рейтинг: 0 / 0
01.10.2018, 12:40
    #39710861
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnikжизнь своих потребителей хоть немного удобнееПо мне, так expressions have to be of SQL types говорит о проблеме яснее, чем вариации ошибок inconsistent datatypes.
...
Рейтинг: 0 / 0
01.10.2018, 23:09
    #39711329
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
UDWSkilledJunior,

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

Иии, где же там написано о запрещенной комбинации:
UDWА ничего, что в Вашем сравнении используется запрещннная комбинация "> null"?
...
Рейтинг: 0 / 0
01.10.2018, 23:25
    #39711333
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnikи в самом деле! Рубя И ТАК УЖЕ столь громадную "капусту" со всего мира за лицензии, можно уже просто и не захотеть сделать жизнь своих потребителей хоть немного удобнее! :-(

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

Если бы разработчик заморочился еще чуть чуть, то он бы прочитал в доке:
Example 7-7 Uninitialized Variable Represents NULL in USING Clause
...
Рейтинг: 0 / 0
02.10.2018, 00:17
    #39711347
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
SkilledJuniorЕсли бы разработчик заморочился еще чуть чуть, то он бы прочитал в доке:
Example 7-7 Uninitialized Variable Represents NULL in USING Clause

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

SY.
...
Рейтинг: 0 / 0
02.10.2018, 12:17
    #39711571
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
SYSkilledJuniorЕсли бы разработчик заморочился еще чуть чуть, то он бы прочитал в доке:
Example 7-7 Uninitialized Variable Represents NULL in USING Clause

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

SY.

а тот что этот литерал может подменятся внутри ява кода мысль не посещала? ;-)
...
Рейтинг: 0 / 0
02.10.2018, 12:30
    #39711579
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках)
DBAshnikлитерал может подменятся внутри ява кода
Если изначально механизм построен на костылях для подпорки рук из жопы, то конечно СУБД кривая.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Я ****(запикано) дорогая редакция!" (в очередной раз с оракловских сообщениях об ошибках) / 25 сообщений из 112, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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