powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На философию потянуло...
139 сообщений из 139, показаны все 6 страниц
На философию потянуло...
    #33819639
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, у меня образовалось немного времени и со страшной силой потянуло на философию :)
И размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?
Кто не против отвлеченной философии - присоединяйтесь :)

Итак, для затравки - мне не хватает:

1) конструкции вроде

Код: plaintext
1.
2.
3.
insert into table x 
select ... from 
    table( delete table y where ... ) 
where... [group by...];

т.е. получать курсор из операции delete.
Это позволило бы существенно упростить логику трансформации предварительных данных.

2) сегмента с организацией queue. В AQ oracle выкручивается на обычных индексированных таблицах, но накладные расходы этой эмуляции довольно значительны...
...
Рейтинг: 0 / 0
На философию потянуло...
    #33819663
MacDuck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousГоспода, у меня образовалось немного времени и со страшной силой потянуло на философию :)


Иди рождение сына обмывай и жену поздравляй! На философию его потянуло....
ТЫ обязан уже мертвецки пьяным быть!
...
Рейтинг: 0 / 0
На философию потянуло...
    #33819719
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
т.е. получать курсор из операции delete.
Это позволило бы существенно упростить логику трансформации предварительных данных.

Вчера был на семинаре по DB2, жутко позавидовал присутствию данной возможности в IBM'овской СУБД.

Лично мне еще не хватает возможности создания бОльшего числа buffer pool'ов, подсмотрено опять же у DB2.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33819744
!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!
Гость
авторГоспода, у меня образовалось немного времени

По ходу оно у тебя никогда и не прекращалось...:)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33820341
Фотография miner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous Господа, у меня образовалось немного времени и со страшной силой потянуло на философию :)
Видать отпуск по уходу взял на 3 года )))

по (1) можно скриптом на pl/sql вполне обойтись, хотя возможность не помешала бы.

Мне лично не хватает "временн'ых" данных, видимо это должен быть особый тип таблицы (текущих возможностей ретроспективных запросив явно недостаточно).
Пример, есть табличка с подразделениями организации (ID подразделения, NAME) и дочерняя таблица со штатом (ID подразделения, ID человека, Разряд, Дата приёма и т.д.)
Хотелось бы на каждую дату приёма вытащить наименование подразделения, каким оно было в тот момент.
Синтаксис мог бы быть таким:
Код: plaintext
1.
2.
select ...
from Штат Ш inner join Подразделения as of timestamp Ш.Дата_зачисления П on (Ш.ID_подразделения = П.ID_подразделения)
where ...

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

запрос к текущему состоянию:
Код: plaintext
Select * from Таблица

и запрос ко всем прецедентам состояний:
Код: plaintext
Select * from (Таблица as  of history) t

В последнем случае должен добавлятся ещё псевдостолбец момента возникновенимя состояния (хотя можно выводить его и в первом случае).


Вообще же мне интересным представляется открытый проект создания СУБД, причём не обязательно сразу на уровне реализации
, а последовательно, начиная с требований к инфраструктуре организации такой работы и переходя к требованиям к самой системе (архитектуре и элементам) и затем к их реализации.
Предвижу сразу массу возражений связанных с тем, что подобные проекты уже существуют
, но здесь могу сказать сразу, что в России мне такие не известны.
К томуже не забывайте, что мы просто философствуем (я лично с холодным Zipferom) :)
Если проект будет успешным даже на уровне спецификации, то он вполне может развиваться в рамках какого либо вуза (есть же пример FreeBSD).
Ещё один довод - слышал в новостях что правительство обеспокоено засильем вражеского ПО в стратегически важных отраслях народного хозяйства, так что потребность есть - нет предложения (на лицо револющионная ситуация).
...
Рейтинг: 0 / 0
На философию потянуло...
    #33820349
Yuri Kazakoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы можно было сделать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SQL> create table zhopa1(...);

SQL> insert into zhopa1 values ...;

SQL> savepoint sp1;

SQL> drop table zhopa1;

SQL> rollback to sp1;

SQL> select * from zhopa1;
   ID    NAME
_____   _____
     1        a

В MS SQL так можно. Со всеми вытекающими. Вначале кривился, а потом понравилось.

А ещё чтобы в Оракл встроили Си, как Джаву встроили.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33820371
Фотография Barkovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я давно говорю, что мне в оракле не хватает большой кнопки: "решить проблему".
...
Рейтинг: 0 / 0
На философию потянуло...
    #33820556
OracleX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне хотелось бы иметь элегантный способ для Insert (Update) одной записи в БД
через механизм вызова PL/SQL подпрограмм.

Я бы добавил в OCI новую структуру (Handle) OCI_UpdateRawDescriptor
(список колонок (измененных или фиксированный список, как хотите)),
в которую на клиенте можно занести BIND-переменные.

На стороне сервера в прикладном пакете mytable_pck будет что-то вида:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
PROCEDURE upd(p_UpdRaw IN SYSUpdateRaw, p_Id IN PLS_INTEGER, p_made_on IN DATE)
IS
  RAW UPDATE mytable 
  SET 
    made_on = SYSTIMESTAMP
  WHERE id = p_Id 
    AND made_on = p_made_on
  USING p_UpdRaw;

  IF SQL%ROWCOUNT =  0  THEN
    raise_application_error(- 20000 ,'Запись была изменена другим пользователем');
  ELSE   
    COMMIT;
  END IF;  
END;

Машина PL/SQL должна иметь описание типа SYSUpdateRaw, операторов RAW UPDATE, RAW INSERT
и уметь переделывать приведенный выше RAW UPDATE
в стандартный оператор UPDATE с Bind-переменными.

Желательно, чтобы при этом не использовался DBMS_SQL,
то есть реализовать сей механизм в ядре напрямую,
а не через кучу интерпретируемого кода.

Это позволило бы значительно упростить написание связок клиентский код - PL/SQL код,
уменьшить размер обоих, унифицировать прикладной код.

Актуально для задач, связанных с работой пользователя по добавлению/обновлению
одиночных записей в БД (бухгалтерия, склад, операционный день и т.п.)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33821102
biv2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне бы многово бы хотелось (несмотря на все достоинства оракл громозкий)
но что в первую очередь это простую конструкцию вида

m1:=select ... from (table,wiev,(select),m2); где (m* коллекция тире курсор)

было бы просто (и если бы оракл постарался и эфективно

1 типа запись выще не требует немедленого выполнения это обьявление

2 если я потом в программе делаю m3:=select * from m2 where ....
это обьевление вида (select * from (select ...))

3 вот когда я в програме делаю типа x:=m3[1].name; разбор курсора , open его, fetch , присвоение переменой
...
Рейтинг: 0 / 0
На философию потянуло...
    #33821283
Sergey M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне бы лично хотелось иметь встроенную конструкцию наподобие LIMIT в MySql. Знаю что без этого обойтись можно но тем не менее было бы приятно.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33821284
Фотография Tolmachov Dmitiry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне бы хотелось, чтобы при работе с будущим релизом Oracle у меня уже была возможность вызвать секретаршу, попросить сделать мне кофе или чего-нибудь еще...
...
Рейтинг: 0 / 0
На философию потянуло...
    #33821422
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey MМне бы лично хотелось иметь встроенную конструкцию наподобие LIMIT в MySql. Знаю что без этого обойтись можно но тем не менее было бы приятно.
типа лимит они попытались что-то сделать см SAMPLE

чего бы хотелось
1) аналит ф-ции
a) аналог having
b) вложенные аналит ф-ции

2) еще один тип ТМП таблиц без генерации логов (пусть и без роллбека)

3) ордер бу в UPDATE (уже почти есть)
и чтоб MERGE на инсерт "правильно" работал

4) стандартные "табле" типы для базовых полей (аналог sys_refcursor)

5) стандартная групповая функия "колонку в строку"

6) кляуза вибрать записи с n по м (не через подзапросы)

7) добавить блокировку по чтению

8) включать/выключать обработку хинтов на уровне сессии (оператора)

9) убрать ограничение на ссылку на поля в "коррелированном" подзапросе

10) добавать констраит "непересекающейся диапазон"

а чуть не забыл,
убрать это переключение контекста с sql и pl/sql

PS
ну и с этими "рестартами" что-то надо делать

......
stax
...
Рейтинг: 0 / 0
На философию потянуло...
    #33821803
Фотография Takurava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы можно было написать
Код: plaintext
1.
2.
select DIR, count(*)
  from dir_size
  group by  1 
вместо
Код: plaintext
1.
2.
select DIR, count(*)
  from dir_size
  group by DIR
...
Рейтинг: 0 / 0
На философию потянуло...
    #33822005
Grami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне лично весьма не хватает
1. Партиционированных таблиц в индексном кластере (хочеца в кластере хранить Большие таблицы)
2. Возможности создать IOT таблицу при composite партиционировании

:)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33822732
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
minerМне лично не хватает "временн'ых" данных, видимо это должен быть особый тип таблицы
А Workspace Management это случаем не то что вам надо?


Yuri Kazakoff
То бишь Recycle Bin уже не модно :-)

Присоединяюсь к Takurava или хотя бы
Код: plaintext
1.
2.
3.
select DIR d, count(*)
  from dir_size
  group by d

Хотя если честно фич хватает, хочется чтобы имеющиеся фичи работали. А то июнь заканчивается а патча на последнюю большую дырку все нет.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33822831
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как я мог забыть (позор на мою голову)
0.0
порядок срабатывания триггеров
.....
stax
...
Рейтинг: 0 / 0
На философию потянуло...
    #33822867
афтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы уметь апдейтить вcю строку, не перечисляя столбцов

update ТАБЛ x
set VALUE(x) = l_row(i)
where ...
...
Рейтинг: 0 / 0
На философию потянуло...
    #33822879
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
афторХотелось бы уметь апдейтить вcю строку, не перечисляя столбцов
set VALUE(x) = l_row(i)RTFM Updating the Database with PL/SQL Record Values (FAQ)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33822897
афтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic афторХотелось бы уметь апдейтить вcю строку, не перечисляя столбцов
set VALUE(x) = l_row(i)RTFM Updating the Database with PL/SQL Record Values (FAQ)

Премного благобдарю! Только почему в Оракловой документации я этого найти не могу:(
Смотрел как здесь
Oracle® Database SQL Reference 10g Release 2 (10.2)
Так и здесь
Oracle® Database PL/SQL User's Guide and Reference 10g Release 2 (10.2)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33822901
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
афторТак и здесь
Oracle® Database PL/SQL User's Guide and Reference 10g Release 2 (10.2)

Так и здесь

SY.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33822904
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2andrey_anonymous: Отличная тема.
Я реальный человек и не хватает мне вещей, которые , мне кажется скоро появятся. Многого не прошу :-)
1. Наведение порядка в ANSI- синтакисе джойнов.
2. INSERT - SELECT - RETURNING. Не понятно, почему не доделают.
3. Расширение скалярных подзапросов до нескольких колонок.
4. Дальнейшее совершенствование CASE - структур.
5. Дальнейшее совершенствование регулярных выражений.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33823055
Фотография miner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257
А Workspace Management это случаем не то что вам надо?

Нет, не идёт ни в какое сравнение с тем, что там нафантазировал (слишком много ограничений).
Но движение в верном направлении есть, ещё через пару версий может и выйдет толк.

Да, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33823301
Yuri Kazakoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а ещё бесит, что rman вываливает стотысячмиллионовмиллиардовсекстильонов сообщений:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
RMAN> whatthefuck

RMAN- 00571 : ===========================================================
RMAN- 00569 : =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN- 00571 : ===========================================================
RMAN- 00558 : error encountered while parsing input commands
RMAN- 01005 : syntax error: found "identifier": expecting one of: "allocate, alter, 
backup, beginline, blockrecover, catalog, change, connect, copy, create, 
crosscheck, configure, duplicate, debug, delete, drop, exit, endinline, host, {, 
library, list, mount, open, print, quit, recover, register, release, replace, report, 
renormalize, reset, restore, resync, rman, run, rpctest, set, setlimit, sql, spool, 
startup, shutdown, send, show, test, upgrade, validate"
RMAN- 01008 : the bad identifier was: whatthefuck
RMAN- 01007 : at line  1  column  1  file: standard input

RMAN>

И предыдущие команды по полчаса ищешь...
...
Рейтинг: 0 / 0
На философию потянуло...
    #33823541
Grami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
minerДа, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.

Присоединяюсь + отмена ограничения на 1000 элементов в in (...)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33823548
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grami minerДа, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.

Присоединяюсь + отмена ограничения на 1000 элементов в in (...)

Надмозги за работой ?
...
Рейтинг: 0 / 0
На философию потянуло...
    #33824414
Grami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grexhide Grami minerДа, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.

Присоединяюсь + отмена ограничения на 1000 элементов в in (...)

Надмозги за работой ?

Непонял?
...
Рейтинг: 0 / 0
На философию потянуло...
    #33826221
rvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось, чтобы если при INSERT отваливается unique constraint возвращался rowid существующей записи или само значение уникального ключа.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33826780
Yuri Kazakoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Grami minerДа, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.

Присоединяюсь + отмена ограничения на 1000 элементов в in (...)

А, может, проще сделать временную табличку, куда записать все 1000 и более строк, а потом её соединить с основной табличкой? Вот и результат будет. А то 1000 и более OR-ов как-то некрасиво.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33826805
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочется возможность bulk-ом загружать в поле "index by" :)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33827574
Не хватает вьюх с параметрами. Я имею в виду следущее. Зачастую, вместо того, чтобы писать PL/SQL-функцию, хочется определить вьюху с параметрами:
Код: plaintext
1.
2.
3.
4.
5.
create view v(p1 number, p2 number)
as
select '=' eq from dual where p1 = p2;

select * from v( 1 ,  2 );
...
Рейтинг: 0 / 0
На философию потянуло...
    #33827613
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы из MERGE убрали дурацкое ограничение про stable set of rows...
Ну не пофигу ораклу, чтобы из одной строки источника проапдейтились 10 строк таблицы?
...
Рейтинг: 0 / 0
На философию потянуло...
    #33827900
Grami
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri Kazakoff Grami minerДа, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.

Присоединяюсь + отмена ограничения на 1000 элементов в in (...)

А, может, проще сделать временную табличку, куда записать все 1000 и более строк, а потом её соединить с основной табличкой? Вот и результат будет. А то 1000 и более OR-ов как-то некрасиво.

Зато работает вместо двух минут - одну секунду.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33828944
m_kus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
constraint FkChildtoMaster foreign key (IdMaster) references Master(Id)
ERROR MESSAGE 'В таблице Child есть поорождённые записи'
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829060
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_kus
Код: plaintext
1.
constraint FkChildtoMaster foreign key (IdMaster) references Master(Id)
ERROR MESSAGE 'В таблице Child есть поорождённые записи'


Есть такое во всех уважающих себя клиентах.
Это не задача сервера, а задача клиента - отобразить на нужном языке сообщение об ошибке.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829063
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvkХотелось, чтобы если при INSERT отваливается unique constraint возвращался rowid существующей записи или само значение уникального ключа.

LOG ERRORS CLAUSE
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829067
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JannnyХочется возможность bulk-ом загружать в поле "index by" :)

Дык тогда он перестанет быть bulk-ом
Если надо, перелить всегда можно.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829074
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ненавижу регистрациюНе хватает вьюх с параметрами. Я имею в виду следущее. Зачастую, вместо того, чтобы писать PL/SQL-функцию, хочется определить вьюху с параметрами:
Код: plaintext
1.
2.
3.
4.
5.
create view v(p1 number, p2 number)
as
select '=' eq from dual where p1 = p2;

select * from v( 1 ,  2 );


Было бы хорошо, но от такого оптимизатор свихнется, думаю.
Обычно для параметризованных вьюх (вовсю пользовали на прошлой работе через пакетные переменные) нужно не только использование параметров, но и разная логика, в зависимости от них, т.е. вьюхи получались сильно перегруженными логикой.
Пусть бы вместо уродского энидатасета сделали определение типа возвращаемого курсора во время исполнения (ну, и глюки из пайплайн-функций поубирали).
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829086
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousГоспода, у меня образовалось немного времени и со страшной силой потянуло на философию :)
И размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?
Кто не против отвлеченной философии - присоединяйтесь :)

Итак, для затравки - мне не хватает:

1) конструкции вроде

Код: plaintext
1.
2.
3.
insert into table x 
select ... from 
    table( delete table y where ... ) 
where... [group by...];

т.е. получать курсор из операции delete.
Это позволило бы существенно упростить логику трансформации предварительных данных.


Это при single-subscriber.
Тогда уж и до кучи (для multi-subscriber):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
merge into ...
using ...
when matched then
  if ... then update ... (update source ... |delete source ...)
  else delete ... (update source ... |delete source ...)
when not matched then
  if ... then insert (update source ... |delete source ...)
  else null (update source ... |delete source ...)

...
Рейтинг: 0 / 0
На философию потянуло...
    #33829089
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri Kazakoff Grami minerДа, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.

Присоединяюсь + отмена ограничения на 1000 элементов в in (...)

А, может, проще сделать временную табличку, куда записать все 1000 и более строк, а потом её соединить с основной табличкой? Вот и результат будет. А то 1000 и более OR-ов как-то некрасиво.

Сделал 2000 через union all - сервак сказал, что такую х*ню парсить не будет, шаред жалко. И правильно сделал - 1000 в in - это только DSQL, в нем лучше включить голову, чем таких конструкций от оракла домогаться.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829096
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TakuravaЧтобы можно было написать
Код: plaintext
1.
2.
select DIR, count(*)
  from dir_size
  group by  1 
вместо
Код: plaintext
1.
2.
select DIR, count(*)
  from dir_size
  group by DIR


Ага, мля, а потом нормальные разработчики с таким кодом днями будут трахаться и тибидохаться, когда ты напишешь
Код: plaintext
1.
2.
3.
select v1.*,sum(v2.value) 
from v1 inner join v2 on v1.id=v1.id
group by  1 ,rollup( 2 , 3 , 4 )
, а потом в v1 поменяется порядок полей.

фтопку!
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829102
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey MМне бы лично хотелось иметь встроенную конструкцию наподобие LIMIT в MySql. Знаю что без этого обойтись можно но тем не менее было бы приятно.

rownum, что-ли?
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829111
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax.
10) добавать констраит "непересекающейся диапазон"


Да-да-да-да!!!
И еще быстрое сравнение диапазонов по двум полям вида:
Код: plaintext
1.
range(sysdate- 1 ,sysdate+ 1 ) intersects range(dt_1,dt_2)
с помощью специальных индексов.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829126
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax.как я мог забыть (позор на мою голову)
0.0
порядок срабатывания триггеров
.....
stax

Мля-2. Как с этим потом другие разработчики будут разбираться! Это же полностью жопный способ спроектировать что-до - ты бы еще GO TO пожелал...
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829133
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
афторХотелось бы уметь апдейтить вcю строку, не перечисляя столбцов

update ТАБЛ x
set VALUE(x) = l_row(i)
where ...

КГ/..
При накатывании патчей порядок столбцов на разработческой базе и у клиента разный. У разных клиентов тоже может быть разный.
фтопку.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829150
Я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я
Гость
RA\/ENНу ты разошелся :)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829244
Фотография Takurava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/ENа потом нормальные разработчики с таким кодом днями будут трахаться и тибидохаться, когда ты напишешь
Код: plaintext
select v1.*

Скорее так напишет НЕ нормальный разработчик
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829384
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Takurava RA\/ENа потом нормальные разработчики с таким кодом днями будут трахаться и тибидохаться, когда ты напишешь
Код: plaintext
select v1.*

Скорее так напишет НЕ нормальный разработчик

абассака
ржунимагу, ничего личного.

Даже если написать v1.a,v1.b,v1.c,v1.d - сути это не меняет.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829454
Фотография Takurava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/ENДаже если написать v1.a,v1.b,v1.c,v1.d - сути это не меняет.
А почему, если написать
Код: plaintext
1.
2.
select v1.a, v1.b, v1.c, v1.d, sum(v2.value) 
  from v1 inner join v2 on v2.id=v1.id
  group by  1 , rollup( 2 ,  3 ,  4 )
при изменении порядка полей в таблице v1, запрос перестанет правильно работать?
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829586
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey MМне бы лично хотелось иметь встроенную конструкцию наподобие LIMIT в MySql. Знаю что без этого обойтись можно но тем не менее было бы приятно.
LIMIT - плохая конструкция. Плохая тем, что ее применение подразумевает многократное исполнение одного и того же запроса; при этом естественно было бы потребовать достижения двух целей, которые в ней, если не ошибаюсь, не достигаются:

- согласованность данных между отдельными вызовами
- отсутствие дополнительной нагрузки (выполнение запроса один раз).

Полагаю, если бы Oracle предложил хорошее стандартное решение проблемы pagination (или как она там), это было бы здорово. Ну а LIMIT - "решение, которым не следует пользоваться", соответственно нафиг надо.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33829926
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Takurava RA\/ENДаже если написать v1.a,v1.b,v1.c,v1.d - сути это не меняет.
А почему, если написать
Код: plaintext
1.
2.
select v1.a, v1.b, v1.c, v1.d, sum(v2.value) 
  from v1 inner join v2 on v2.id=v1.id
  group by  1 , rollup( 2 ,  3 ,  4 )
при изменении порядка полей в таблице v1, запрос перестанет правильно работать?

А представь теперь, что между select и group by строка 200 кода. И не заметить ошибку, допустим, при смене полей - как нефиг нафиг.
Проходил уже - 3 часа ковырялся за одним "разработчиком", который вместо честных выражений сделал уровень вложенности, и попутал алиасы - полная аналогия того, что будет, если делать group by 1,rollup(2,3).
...
Рейтинг: 0 / 0
На философию потянуло...
    #33979432
NightGhost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и не понял можно ли обойти на мой взгляд глупое ограничение
пр ивыполнении динамического запроса с использованием DBMS_SQL
ограничение касается того что нельзя
сделать бинд входного массива и бинд выходного массива

тоесть нельзя хотеть в SQL select забиндидь массив и получить тоже
массив
массив можно получать только по строчкам УЖОС ПРОСТО
а если у меня в результате получится 100к строчек ответа я что помереть от старости должен пока их в цикле загоню в массив

Кстати если у кого есть решение данной прболемы буду признателен
кинте плиз ссылочку
popov_art@mail.ru
...
Рейтинг: 0 / 0
На философию потянуло...
    #33979461
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightGhostтоесть нельзя хотеть в SQL select забиндидь массив и получить тоже массив
Код: plaintext
begin select value into :value from t where id = :id; end;
...
Рейтинг: 0 / 0
На философию потянуло...
    #33979694
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Нашелся топик.
Хочу от оракла индексы и явное управление превращением подзапроса в темповую таблицу в конструкции with, а так же разрешать в списке with неиспользуемые подзапросы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
with 
q1 /*+ MAKE_TEMP INDEX(OBJECT_ID) INDEX(OWNER,OBJECT_NAME) COMPRESS 1*/ 
as (
  select * from all_objects),
q2 /*+ NO_MAKE_TEMP*/
as (
  select  1  One from dual)
select * from q1 where owner = 'SYS' order by Object_Name

Должно сконвертить q1 в темп, построить индекс и сделать SKIP_SCAN по нему.

А еще темповые таблицы a-la MSSQL - тот же with, только повторно используемый.

Код: plaintext
1.
2.
3.
4.
 create with_table q1 as (select * from dual) index q1_i(dummy)
 /
 drop with_talbe q1
 /
И все это не DDL.
Хотя это вызовет проблемы с компиляций, но, если, например, определять это структурой курсора в коде... Просто не всегда удобно в вычислительных задачах таскать за собой скрипты с кучей темповых таблиц, а если генерить их в рантайме, то все съезжает в DSQL из-за раскомпиляции.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33979945
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Явное превращение в темп
Код: plaintext
/*+ materialize*/
противоположное ему
Код: plaintext
/*+ inline*/
только все недокументировано :(
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980087
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmЯвное превращение в темп
Код: plaintext
/*+ materialize*/
противоположное ему
Код: plaintext
/*+ inline*/
только все недокументировано :(

Да, век живи-век учись...
Нарыл описание ( претендующее на полноту ) хинтов оракла, буду пытаться разобраться, что это такое.
http://www.adp-gmbh.ch/ora/sql/hints.html
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980162
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/EN
Да, век живи-век учись...


Да.... мощная конструкция... Интересно, насколько она легальна ?
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980305
Гость1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TimmЯвное превращение в темп
Код: plaintext
/*+ materialize*/
противоположное ему
Код: plaintext
/*+ inline*/
только все недокументировано :(

А каким образом данный хинт юзать?
в запросах типа with lalala as... ?
как проверить что данный хинт действительно пашеть?
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980326
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  SQL Statement from editor:
   
   
  with my_dual as (select  1  as num from dual)
  select * from my_dual
  ------------------------------------------------------------
    
  Statement Id= 1    Type=TABLE ACCESS
  Cost= 2   TimeStamp= 12 - 09 - 06 :: 15 :: 57 : 47 
  
       ( 1 )  SELECT STATEMENT  CHOOSE 
     Est. Rows:  1   Cost:  2 
       ( 2 )  TABLE ACCESS FULL SYS.DUAL  [Analyzed] 
       ( 2 )   Blocks:  1  Est. Rows:  1  of  1   Cost:  2  
     Tablespace: SYSTEM

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  SQL Statement from editor:
   
   
  with my_dual as (select /*+ materialize*/  1  as num from dual)
  select * from my_dual
  ------------------------------------------------------------
    
  Statement Id= 1    Type=RECURSIVE EXECUTION
  Cost= 0   TimeStamp= 12 - 09 - 06 :: 15 :: 58 : 16 
  
       ( 2 )  SELECT STATEMENT  CHOOSE 
     Est. Rows:  1   Cost:  2 
           ( 1 )  RECURSIVE EXECUTION.SYS_LE_2_0
    TEMP TABLE TRANSFORMATION
           ( 4 )  VIEW (Embedded SQL) 
                Est. Rows:  1   Cost:  2 
               ( 3 )  TABLE ACCESS FULL SYS.SYS_TEMP_0FD9D6662_8723E40F  [Analyzed] 
                    Est. Rows:  1   Cost:  2 
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980338
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grexhide RA\/EN
Да, век живи-век учись...


Да.... мощная конструкция... Интересно, насколько она легальна ?

Кайт говорит, что обходится rownum>0, но это не совсем то, что хинт - на примере Владимира не материализует.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980505
contr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/EN grexhide RA\/EN
Да, век живи-век учись...

Да.... мощная конструкция... Интересно, насколько она легальна ?
Кайт говорит, что обходится rownum>0, но это не совсем то, что хинт - на примере Владимира не материализует.
Кайт пользуется для другого, а именно - для получения VIEW.
Соответствующий хинт - /*+no_merge*/
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980529
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доменов немножко не хватает, чтобы один раз описать CHECK CONSTRAINT и потом просто использовать получившийся домен (BOOLEAN, PHONE_NUMBER, etc) везде, где надо.

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

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

Не хватает возможности получить автоматом приблизительную оценку длительности/progress'а длинной операции.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980558
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О ! Вспомнил.

Возможность использования CLOB в динамическом SQL.

Оффтоп. Внимание ! Название темы частично "заражено" .
(Timm, по- моему это Вы - что за ebookи ? )
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980565
contr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iamhereНе хватает возможности получить перечень ошибок для DEFERRED CONSTRAINT.??? Что имелось ввиду? iamhere
Не хватает возможности получить автоматом приблизительную оценку длительности/progress'а длинной операции.
Код: plaintext
v$session_longops
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980576
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iamhere
Не хватает возможности получить автоматом приблизительную оценку длительности/progress'а длинной операции.

V$SESSION_LONGOPS, dbms_application_info.set_session_longops в т.ч.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980605
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
contr iamhereНе хватает возможности получить перечень ошибок для DEFERRED CONSTRAINT.??? Что имелось ввиду?

Есть DEFERRED CONSTRAINT. Quantity > 0, например.
Есть транзакция, которая разными способами меняет этот Quantity в разных строках. Делает COMMIT и вываливается, потому что Quantity получился где-то < 0, в т.ч. и из-за параллельных сессий. FOR UPDATE - дорого и в 99% случаев не нужно, т.к. обновляются разные записи или записи, где Quantity МНОГО. Поэтому делаем так, с DEFERRED. Но вот знать бы еще, в каких строках этот CONATRAINT (который во время COMMIT срабатывает) обломался... EXCEPTIONS INTO тут не прокатывает.

contr
iamhere
Не хватает возможности получить автоматом приблизительную оценку длительности/progress'а длинной операции.
Код: plaintext
v$session_longops


Не то. Это КУСОЧКИ длинной операции :)
Я прекрасно понимаю, что невозможно предсказать это общее время, даже имея всю статистику и план - потому что от даннх зависит. Но все-таки не хватает :)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980629
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iamhere
Я прекрасно понимаю, что невозможно предсказать это общее время, даже имея всю статистику и план - потому что от даннх зависит. Но все-таки не хватает :)

Ты хоть бы справочник почитал. на предмет V$SESSION_LONGOPS.SOFAR

или тебе привести формулу "предсказания точного времени" ?
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980650
contr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iamhere contr iamhereНе хватает возможности получить перечень ошибок для DEFERRED CONSTRAINT.??? Что имелось ввиду?
Есть DEFERRED CONSTRAINT. Quantity > 0, например.
Есть транзакция, которая разными способами меняет этот Quantity в разных строках. Делает COMMIT и вываливается, потому что Quantity получился где-то < 0, в т.ч. и из-за параллельных сессий. FOR UPDATE - дорого и в 99% случаев не нужно, т.к. обновляются разные записи или записи, где Quantity МНОГО. Поэтому делаем так, с DEFERRED. Но вот знать бы еще, в каких строках этот CONATRAINT (который во время COMMIT срабатывает) обломался... EXCEPTIONS INTO тут не прокатывает.
Хм.
"Из-за параллельных транзакций" - очень сомнительно, ибо уже первый update заблокирует строку (или обломится).
Если же строка обновляется отлько в самом-самом конце, то не нужны никакие deferred...
ИМХО тут дело не в deferred, а в нецелевом его использовании ;)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980830
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
contrКайт пользуется для другого, а именно - для получения VIEW.
Соответствующий хинт - /*+no_merge*/Вот только не всегда сей хинт срабатывает, в отличие от того же ROWNUM...
...
Рейтинг: 0 / 0
На философию потянуло...
    #33980851
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmidekО ! Вспомнил.

Возможность использования CLOB в динамическом SQL.

Оффтоп. Внимание ! Название темы частично "заражено" .
(Timm, по- моему это Вы - что за ebookи ? )
Это все Опера :)
Вот тема про ебуки (там и оракловые книги есть, правда сейчас ниче не доступно)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33981194
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmЯвное превращение в темп
Код: plaintext
/*+ materialize*/
противоположное ему
Код: plaintext
/*+ inline*/
только все недокументировано :(
Кстати. По моим наблюдениям temp table transformation появляется сразу же если subquery_factoring_clause используется более одного раза (имхо, это дурацкое решение, попахивает индусами ). Поэтому для "эмуляции" /*+ materialize*/ достаточно добавить union all select 1 from q1 where 1=0 или что то подобное.
А вот с inline все сложнее...
...
Рейтинг: 0 / 0
На философию потянуло...
    #33981566
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm
Кстати. По моим наблюдениям temp table transformation появляется сразу же если subquery_factoring_clause используется более одного раза (имхо, это дурацкое решение, попахивает индусами ). Поэтому для "эмуляции" /*+ materialize*/ достаточно добавить union all select 1 from q1 where 1=0 или что то подобное.
А вот с inline все сложнее...

И так сложнее, но, вроде, оптимизатор вполне адекватен.

Это не дает темптабле:

Код: plaintext
1.
2.
3.
with q as (select * from dual  )
select * from q
union all
select * from q where  1 = 2 

а это - дает

Код: plaintext
1.
2.
3.
with q as (select * from dual where exists (select count(*) from dual having count(*)= 1 ) )
select * from q
union all
select * from q where  1 = 2 

Вполне логично.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33981619
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с дьюалом нечестно
...
Рейтинг: 0 / 0
На философию потянуло...
    #33981634
Фотография Ааз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmЯвное превращение в темп
Код: plaintext
/*+ materialize*/
противоположное ему
Код: plaintext
/*+ inline*/
только все недокументировано :(На oracle-l@freelists.org подсмотрел такое
Код: plaintext
select /*+ OPT_PARAM('_optimizer_cost_based_transformation' 'off') */
Я так понимаю, список параметров можно увидеть в трассе 10053

Всего
...
Рейтинг: 0 / 0
На философию потянуло...
    #33981718
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АазНа oracle-l@freelists.org подсмотрел такое
Код: plaintext
select /*+ OPT_PARAM('_optimizer_cost_based_transformation' 'off') */
Я так понимаю, список параметров можно увидеть в трассе 10053

Всего

А примерчик реального использования (хотя-бы эффекта) этого хинта можешь подкинуть?
А то навскидку не получается 10-ку убедить хотя-бы в вырубании картезиана, не говоря уж о включении через это хинт режима RULE.
...
Рейтинг: 0 / 0
На философию потянуло...
    #33981720
contr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/ENне говоря уж о включении через это хинт режима RULE.
Может, просто /*+ RULE */ попробовать? :)
...
Рейтинг: 0 / 0
На философию потянуло...
    #33981758
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
contr RA\/ENне говоря уж о включении через это хинт режима RULE.
Может, просто /*+ RULE */ попробовать? :)

Это не есть интересно. Я, в принципе, насчет RULE не настаиваю, т.к. разбор конкретно этого хинта, по идее, может быть уже после выбора Cost Model.
...
Рейтинг: 0 / 0
На философию потянуло...
    #34101024
m_kus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять обсмеёте :)
Код: plaintext
1.
2.
create table t (id integer default seq.nextval%FOREACHROW,
...)
...
Рейтинг: 0 / 0
На философию потянуло...
    #34101107
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_kusОпять обсмеёте :)
Код: plaintext
1.
2.
create table t (id integer default seq.nextval%FOREACHROW,
...)
имхо - реальнее не ссылка на последовательность, а
набор параметров как в create sequence с тем, чтобы втихаря она
создалась как зависимый от таблицы объект, мож. быть и не совсем как
последовательность, а гибрид последовательности и первичного ключа
...
Рейтинг: 0 / 0
На философию потянуло...
    #34101291
Фотография mcwhite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousГоспода, у меня образовалось немного времени и со страшной силой потянуло на философию :)
И размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?
Кто не против отвлеченной философии - присоединяйтесь :)

Хотелось бы, чтобы предложение RETURNING поддерживало работу с записями.
Т.е. чтобы можно было делать так:
Код: plaintext
1.
2.
3.
4.
-- v_row и v_row2 суть объекты типа my_table%rowtype
update my_table
set row = v_row;
returning * into v_row2;

Пока что вместо звёздочки в выделенной строке нужно перечислять все поля таблицы MY_TABLE. Если же оставить звёздочку, то код не компилируется.

Фишка в том, чтобы в коде можно было не указывать явно отдельные поля таблицы, обеспечив тем самым независимость кода от изменения структуры этой таблицы.
...
Рейтинг: 0 / 0
На философию потянуло...
    #34101320
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcwhite andrey_anonymousГоспода, у меня образовалось немного времени и со страшной силой потянуло на философию :)
И размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?
Кто не против отвлеченной философии - присоединяйтесь :)

Хотелось бы, чтобы предложение RETURNING поддерживало работу с записями.
Т.е. чтобы можно было делать так:
Код: plaintext
1.
2.
3.
4.
-- v_row и v_row2 суть объекты типа my_table%rowtype
update my_table
set row = v_row;
returning * into v_row2;

Пока что вместо звёздочки в выделенной строке нужно перечислять все поля таблицы MY_TABLE. Если же оставить звёздочку, то код не компилируется.

Фишка в том, чтобы в коде можно было не указывать явно отдельные поля таблицы, обеспечив тем самым независимость кода от изменения структуры этой таблицы.
А разве требуемые Вам значения уже все равно не будут лежать в v_row ?
...
Рейтинг: 0 / 0
На философию потянуло...
    #34101340
Фотография mcwhite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmidekА разве требуемые Вам значения уже все равно не будут лежать в v_row ?
Пример, конечно же, до предела тривиальный, потому как не в конкретном операторе дело.

Ещё раз: проблема в том, что нельзя избавиться от явного перечисления полей в предложении RETURNING при работе с записями.
...
Рейтинг: 0 / 0
На философию потянуло...
    #34101344
Sevick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barkovskyя давно говорю, что мне в оракле не хватает большой кнопки: "решить проблему".


Как это нет?
Просто доку невнимательно читали
Она по-умолчанию disabled :))
...
Рейтинг: 0 / 0
На философию потянуло...
    #34452328
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Захотелось:
Код: plaintext
1.
2.
3.
4.
5.
6.
with
    t as (select  1  a,  2  b,  3  c from dual),
    op as (var1*var2*var3)
select
    op(a, b, c)
from t;
чтобы op(a, b, c) преобразовался в a*b*c.
Многа хочу? фактически побороть копи-пейст, и юзать subquery factoring clause для expression factoring :)
да, функцию можно написать. но это - уже PL. а хочеца остаться в SQL'е.
...
Рейтинг: 0 / 0
На философию потянуло...
    #34452450
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmЗахотелось:
Код: plaintext
1.
2.
3.
4.
5.
6.
with
    t as (select  1  a,  2  b,  3  c from dual),
    op as (var1*var2*var3)
select
    op(a, b, c)
from t;
чтобы op(a, b, c) преобразовался в a*b*c.
Многа хочу? фактически побороть копи-пейст, и юзать subquery factoring clause для expression factoring :)
да, функцию можно написать. но это - уже PL. а хочеца остаться в SQL'е.

А потом ищи по тексту ОРИГИНАЛЬНОГО запроса, где у тебя "ORA-01722: invalid number", например
Это не expression factoring, а тупо макроподстановка. А это зло (ты никогда из-за глючного #define в сях не устраивал ночную медитацию перед монитром?)
...
Рейтинг: 0 / 0
На философию потянуло...
    #34452517
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/EN TimmЗахотелось:
Код: plaintext
1.
2.
3.
4.
5.
6.
with
    t as (select  1  a,  2  b,  3  c from dual),
    op as (var1*var2*var3)
select
    op(a, b, c)
from t;
чтобы op(a, b, c) преобразовался в a*b*c.
Многа хочу? фактически побороть копи-пейст, и юзать subquery factoring clause для expression factoring :)
да, функцию можно написать. но это - уже PL. а хочеца остаться в SQL'е.

А потом ищи по тексту ОРИГИНАЛЬНОГО запроса, где у тебя "ORA-01722: invalid number", например
Это не expression factoring, а тупо макроподстановка. А это зло (ты никогда из-за глючного #define в сях не устраивал ночную медитацию перед монитром?)
Ну, зло не большее, как любое лекарство.. если применять без_меры/не_к_месту..
...
Рейтинг: 0 / 0
На философию потянуло...
    #34452602
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже 10 лет хочется классической реализации доменов, как это есть в Oracle Rdb.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
CREATE DOMAIN quantity NUMBER( 7 ) check (quantity >  0 );

CREATE DOMAIN gender CHAR( 1 ) check (gender IN ('М', 'Ж'));

CREATE DOMAIN short_name VARCHAR2( 25 );

CREATE DOMAIN long_name VARCHAR2( 249 );

CREATE DOMAIN birth_date DATE CHECK (birth_date >= TO_DATE('01.01.1900', 'DD.MM.YYYY'));

CREATE DOMAIN id NUMBER( 10 );

CREATE TABLE emp(
   empno id
      CONSTRAINT emp#p PRIMARY KEY
 , ename short_name      NOT NULL
 , birth_date birth_date NOT NULL
 , gender                NOT NULL
 , deptno id             NOT NULL
 , child_cnt quantity
   );

CREATE TABLE dict(
   dict_id id
       CONSTRAINT dict#p PRIMARY KEY
 , name short_name NOT NULL
 , descr long_name
   );

...
ALTER DOMAIN short_name VARCHAR2( 32 );

ALTER DOMAIN quantity NUMBER( 10 );

ALTER DOMAIN id NUMBER( 12 );
...
...
Рейтинг: 0 / 0
На философию потянуло...
    #34452698
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusУже 10 лет хочется классической реализации доменов, как это есть в Oracle Rdb.

+1
...
Рейтинг: 0 / 0
На философию потянуло...
    #34452713
Гость11111111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще хотел бы MOVE (insert into A + delete from B)...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
На философию потянуло...
    #36526190
а еще очень надо insert all, но для коллекций объектов. с BULK COLLECT
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800608
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous"а какого лешегшо мне не хватает в СУБД Oracle"?
Я считаю очень полезной была бы возможность создавать уникальнуй ключ по columns_expression а не просто по columns. Иными словами в Oracle есть отличная фишка FBI, хотелось бы иметь FBUK. :)

Чтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра:
Код: plaintext
alter table t add constraint UK_FIO unique (lower(F), lower(I), lower(O));
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800657
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopЧтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра:
Мне, пожалуй, больше хотелось бы другого:

Код: plaintext
1.
2.
3.
4.
5.
create table document (document_id, document_type, ...);
create index on document (document_id, document_type);
alter table document add primary key (document_id);

create table contract (document_id, ...);
alter table contract add foreign key (document_id,  12 ) references document (document_id, document_type);
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800664
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот мне бы хотелось окон по иерархии over(connect by & siblings).

dbms_photoshopЧтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистраА чем в данном случае FBUK отличается от FBI?
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800710
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopandrey_anonymous"а какого лешегшо мне не хватает в СУБД Oracle"?
Я считаю очень полезной была бы возможность создавать уникальнуй ключ по columns_expression а не просто по columns. Иными словами в Oracle есть отличная фишка FBI, хотелось бы иметь FBUK. :)

Чтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра:
Код: plaintext
alter table t add constraint UK_FIO unique (lower(F), lower(I), lower(O));

А ради чего? Внешние ключи на такой констрейнт как разруливать?
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800733
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerdbms_photoshopЧтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра:
Мне, пожалуй, больше хотелось бы другого:

Код: plaintext
1.
2.
3.
4.
5.
create table document (document_id, document_type, ...);
create index on document (document_id, document_type);
alter table document add primary key (document_id);

create table contract (document_id, ...);
alter table contract add foreign key (document_id,  12 ) references document (document_id, document_type);

FK на неуникальный индекс? о_О
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800734
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,
Да, такое желание возникает и у меня!

-2-А вот мне бы хотелось окон по иерархии over(connect by & siblings).Можно подробнее что имеете в виду. Псевдокод приветствуется. :)
При некоторых допущениях аналитика накручивается .
Лично меня в этом плане все устраивает, разве что кроме огромного кол-ва багов.

-2-А чем в данном случае FBUK отличается от FBI?Уже хотелка отпала. ;)
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800752
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-А вот мне бы хотелось окон по иерархии over(connect by & siblings).
Суммирование по дереву делать? Пример покажи.
-2-dbms_photoshopЧтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистраА чем в данном случае FBUK отличается от FBI?
... а потом оно будет deferred, и на нее будут ссылаться ...
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800756
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/ENFK на неуникальный индекс? о_О
Ну пропустил softwarer ключевое слово одно. Суть то ясна.
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800779
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/ENFK на неуникальный индекс? о_О
Да, кстати:
alter table add constraint check(document_id-trunc(document_id)=document_type)
...
alter table add constraint check(document_id-trunc(document_id)=0.012)

Было дело, не совсем такое, конечно, когда дробными айдишниками проблемы решал.
...
Рейтинг: 0 / 0
На философию потянуло...
    #36800874
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopandrey_anonymous"а какого лешегшо мне не хватает в СУБД Oracle"?
Я считаю очень полезной была бы возможность создавать уникальнуй ключ по columns_expression а не просто по columns. Иными словами в Oracle есть отличная фишка FBI, хотелось бы иметь FBUK. :)

Чтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра:
Код: plaintext
alter table t add constraint UK_FIO unique (lower(F), lower(I), lower(O));

дык 11g вычисляемые поля для этого совершенно подходят
...
Рейтинг: 0 / 0
На философию потянуло...
    #36801048
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishдык 11g вычисляемые поля для этого совершенно подходят
/me бьется головой о стол
...
Рейтинг: 0 / 0
На философию потянуло...
    #36802270
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RA\/ENorawishдык 11g вычисляемые поля для этого совершенно подходят
/me бьется головой о стол
три раза прочитал - ни разу не понял..
переведи
...
Рейтинг: 0 / 0
На философию потянуло...
    #36804751
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перевожу: я обалдел
...
Рейтинг: 0 / 0
На философию потянуло...
    #36804752
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот же умный, сцуко, антимат
Написал "я о_х_у_е_л", а он с меня "обалдел"
...
Рейтинг: 0 / 0
На философию потянуло...
    #36804940
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GramiПрисоединяюсь + отмена ограничения на 1000 элементов в in (...)

Agree, but there is a workaround. Use tuples:

Код: plaintext
1.
2.
3.
4.
select  *
  from  emp
  where (empno, 1 ) in (( 1 , 1 ),( 2 , 1 ),...( 1001 , 1 ),...)
/

SY.
...
Рейтинг: 0 / 0
На философию потянуло...
    #36804991
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Oracle Database очень не хватает классических доменов (которые есть в Oracle Rdb)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE DOMAIN human_name VARCHAR2( 25 ) CHECK (human_name = INITCAP(human_name));
CREATE DOMAIN id NUMBER( 10 );
...

CREATE TABLE dept(
   deptno id
 , ...);

CREATE TABLE emp(
   empno id
 , ename human_name
 , ... );
Потом, когда потребуется внести изменения, то меняется только домен
Код: plaintext
1.
ALTER DOMAIN id NUMBER( 15 );
и все все столбцы таблиц (атрибуты отношений), где этот домен используется, переопределяются уже самой СУБД автоматически.
...
Рейтинг: 0 / 0
На философию потянуло...
    #36805487
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровПеревожу: я обалдел
Неправильно
Перевод "Как до меня не доперло сразу... Бум... Бум... Быдыщ!"
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
На философию потянуло...
    #37497662
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доколе оптимизатор будет тупить на транзитивном замыкании?
Допустим есть две таблицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
create table t1 (dt date not null, val number not null)
partition by range
(dt) interval (numtodsinterval( 1 ,'day'))
(partition values less than (to_date('01-Jan-2011')));

insert into t1
select dt, value
from
(select trunc(sysdate,'YYYY')+level dt 
from dual
connect by level <=  360 ),
(select dbms_random.value value
from dual
connect by level <=  1000 );

create table t2 (dt date not null, val number not null)
partition by range
(dt) interval (numtodsinterval( 1 ,'day'))
(partition values less than (to_date('01-Jan-2011')));

insert into t2
select dt, value
from
(select trunc(sysdate,'YYYY')+level dt 
from dual
connect by level <=  360 ),
(select dbms_random.value value
from dual
connect by level <=  1000 );
Feel the difference:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select sum(t1.val) v1, sum(t2.val) v2
from t1 t1
join t2 t2 on t1.dt = t2.dt
where t1.dt = to_date('01.05.2011','dd.mm.yyyy');

select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));

select sum(t1.val) v1, sum(t2.val) v2
from t1 t1
join t2 t2 on t1.dt = t2.dt + interval '0' day
where t1.dt = to_date('01.05.2011','dd.mm.yyyy');

select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
Конечно, прибавлять ноль дней смысла нет, но бывает надо делать самосоединение со сдвигом на несколько дней.
Workaround очевиден, но я согласен с Джонатаном:
http://jonathanlewis.wordpress.com/2007/01/01/transitive-closure/ If you can exert some influence over the optimizer’s arithmetic by adding redundant (but logically correct) predicates, it gives you a tool to deal with some of the problems that you might meet while trouble-shooting awkward SQL statements.

However, this approach does introduce a risk: the current behaviour is a mistake – the predicate is redundant, and should not affect the selectivity. If you take advantage of this design error in the optimizer, one day you will have to pay the price when Oracle finally corrects the error and the arithmetic changes to behave as if the predicate did not exist. So if you do fix a problem by adding redundant predicates, make sure you document what you did and why, so that it’s easier for the next person to fix when it all goes wrong again.
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696015
Timur Akhmadeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax.6) кляуза вибрать записи с n по м (не через подзапросы)

Похоже, будет в 12с .
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696263
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timur Akhmadeev Похоже, будет в 12с .404 Not Found!
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696290
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, автор нарушил NDA для beta tester

Best regards

Maxim
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696474
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic404 Not Found!Там лишь упоминалось следование ANSI SQL http://en.wikipedia.org/wiki/Select_%28SQL%29#FETCH_FIRST_clause
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696757
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Там лишь упоминалось следование ANSI SQL Да ладно. Я так думаю, мы все будем просто обязаны писать крутейшим кипятком после явления этой ох...но нужной Фичещи (именно с большой буквы, как Человечище).
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696814
_Nikotin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С учетом того что "inline view не может быть коррелированным" вполне себе фича.
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696835
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_NikotinС учетом того что "inline view не может быть корре л ированным" вполне себе фича.Ещё раз: да ладно. Это так и не сделали, а то будет, как обычно, глючить года три.
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696838
_Nikotin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicкорре л ированным
???
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696843
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Nikotin???Что-то словарь в опере глючит, а я повёлся...
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696844
_Nikotin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

А я это взял отсюда 7639237 :)
...
Рейтинг: 0 / 0
На философию потянуло...
    #37696847
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_NikotinА я это взял отсюда 7639237 :)А я когда-то мог написать неправильно, поэтому никому не верю. Даже себе.
...
Рейтинг: 0 / 0
На философию потянуло...
    #37697641
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousИ размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?


ух,такую такую тему подняли

хочу
TO_NUMBER(expr [, fmt ] [, 'nlsparam' ])

ps
не поскажете что в 12 значит с
Oracle Database 12c Enterprise Edition Release 12.1.0.0.1 - 64bit Beta

.....
stax
...
Рейтинг: 0 / 0
На философию потянуло...
    #37697669
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..
ps
не поскажете что в 12 значит с
Oracle Database 12c Enterprise Edition Release 12.1.0.0.1 - 64bit Beta

.....
stax
Думаю, тоже самое что и в ОЕМ 12 c loud
...
Рейтинг: 0 / 0
На философию потянуло...
    #37697700
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pravednikstax..ps
не поскажете что в 12 значит с
Oracle Database 12c Enterprise Edition Release 12.1.0.0.1 - 64bit Beta

.....
stax
Думаю, тоже самое что и в ОЕМ 12 c loud
странно
cloud -> translate.google.com.ua -> облако

зы
а я прогнозировал 13j

.....
stax
...
Рейтинг: 0 / 0
На философию потянуло...
    #37697801
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..странно
cloud -> translate.google.com.ua -> облакону а чего странного то?
Куда не плюнь - облачные вычисления, облачные то, облачные сё...
...
Рейтинг: 0 / 0
На философию потянуло...
    #37703476
dbrm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не хватает штатной возможности ограничивать время выполнения запроса. Штатной = DBRM.
Приходится по-прежнему изобретать велосипед.
switch_time - ограничивает cpu время, а не elapsed, что не позволяет его использовать для решения поставленных задач.
...
Рейтинг: 0 / 0
На философию потянуло...
    #37761952
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbrm,

Очень не хватает возможности одним оператором удалять колонки в сжатых (compressed) таблицах.
...
Рейтинг: 0 / 0
На философию потянуло...
    #37762093
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый ТелевизорОчень не хватает возможности одним оператором удалять колонк и в сжатых (compressed) таблицах.drop table?
...
Рейтинг: 0 / 0
На философию потянуло...
    #37762339
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще в merge возможности удалаять не найденные в цели строки, а также добавлять, изменять и удалять строки в источнике.
...
Рейтинг: 0 / 0
На философию потянуло...
    #37763014
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Глупый ТелевизорОчень не хватает возможности одним оператором удалять колонк и в сжатых (compressed) таблицах.drop table?Я ценю твое чувство юмора.
...
Рейтинг: 0 / 0
На философию потянуло...
    #37763017
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевА еще в merge возможности удалаять не найденные в цели строки, а также добавлять, изменять и удалять строки в источнике .Здесь серьезная тема, а не Comedy Club.
...
Рейтинг: 0 / 0
На философию потянуло...
    #37763114
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый ТелевизорЗдесь серьезная тема, а не Comedy Club.
Никак не могу отойти от дискуссии, является ли создание hash таблицы сортировкой. :)

P.S. А по сути, как иначе одной операцией сделать двунаправленную репликацию таблиц?
...
Рейтинг: 0 / 0
На философию потянуло...
    #37893119
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В отдельных случаях связанных с DWH крайне не хватает error logging clause for multi table insert.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
На философию потянуло...
    #39405381
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно почему не могут добавить использование exists conditions в if-statements как в MSSQL
Код: plsql
1.
create procedure p_test as begin if exists (select 1 where 1 = 0) or 1 > 0 print 'ok' end
...
Рейтинг: 0 / 0
На философию потянуло...
    #39405403
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopexists conditions в if-statementsЭто, по сути, лишь синтаксический сахар.
IF( EXISTS...) в процедуре
...
Рейтинг: 0 / 0
На философию потянуло...
    #39405532
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshopНепонятно почему не могут добавить использование exists conditions в if-statements как в MSSQL
Код: plsql
1.
create procedure p_test as begin if exists (select 1 where 1 = 0) or 1 > 0 print 'ok' end


потому что программисты побить могут. оно exists на момент t1, а на момент t2 уже все иначе. тогда для процедурного языка изобретать уровни изолированности транзакций нужно.
...
Рейтинг: 0 / 0
На философию потянуло...
    #39405583
Yo.!,

предифовый селект инту отменяет реад коммитед?
...
Рейтинг: 0 / 0
На философию потянуло...
    #39405625
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
if my_exists(cursor(...))Yo.!,

предифовый селект инту отменяет реад коммитед?
селект инту возвращает консистентеный результат (который можно попросить FOR UPDATE), а if exists () никакого смысла не несет. на момент t2 может проверка актуальна, может нет. а может это дворник злой (тм)
...
Рейтинг: 0 / 0
На философию потянуло...
    #39405630
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!селект инту возвращает консистентеный результат (который можно попросить FOR UPDATE)И что же он проforupdateит на случай отсутствия или присутствия незакомиченных данных?
Вопросы изоляции требуют решения независимо от наличия "синтаксического сахара".
...
Рейтинг: 0 / 0
На философию потянуло...
    #39405681
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicdbms_photoshopexists conditions в if-statementsЭто, по сути, лишь синтаксический сахар.
IF( EXISTS...) в процедуре Я не спорю. Но если есть условие вида
Код: plaintext
1.
2.
3.
if expr
and exists ()
and exists ()
and exists ()
то может понадобиться уже три вложенных цикла по курсорам.
А если заменить and на or становится еще интереснее.
Yo.!dbms_photoshopНепонятно почему не могут добавить использование exists conditions в if-statements как в MSSQL
Код: plsql
1.
create procedure p_test as begin if exists (select 1 where 1 = 0) or 1 > 0 print 'ok' end


потому что программисты побить могут. оно exists на момент t1, а на момент t2 уже все иначе. тогда для процедурного языка изобретать уровни изолированности транзакций нужно.С другой стороны то, что вызовы PL/SQL функций из SQL возвращают данные на разные SCN даже для одной строки мало кого смущает.
Может есть идеи почему бы Ораклу не было изначально сделать, чтоб функция вела себя согласованно как орператор?

Еще как аргумент можно привести что у Оракла могут быть дополнительные трудности с порядком вычисления условий.
Но это не непреодолимые препятствия.
...
Рейтинг: 0 / 0
На философию потянуло...
    #39405713
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopто может понадобиться уже три вложенных цикла по курсорам.
А если заменить and на or становится еще интереснее.Ты не понял паттерна. Все SQL-условия прописываются в одном запросе.
...
Рейтинг: 0 / 0
На философию потянуло...
    #39405715
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopМожет есть идеи почему бы Ораклу не было изначально сделать, чтоб функция вела себя согласованно как орператор?
Тогда ему как минимум пришлось бы делать функции read-only, как в MSSQL, что куда тупее. А в целом, если закопаться в историю развития, думаю, и здесь ноги окажутся растущими из тупой идеи "работает - не трогай" разделения SQL- и PLSQL-движков.
...
Рейтинг: 0 / 0
139 сообщений из 139, показаны все 6 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На философию потянуло...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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