Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4 5 6      [все]
 На философию потянуло...  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 15996
Господа, у меня образовалось немного времени и со страшной силой потянуло на философию :)
И размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?
Кто не против отвлеченной философии - присоединяйтесь :)

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

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

insert into table x 
select ... from 
    table( delete table y where ... ) 
where... [group by...];

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

2) сегмента с организацией queue. В AQ oracle выкручивается на обычных индексированных таблицах, но накладные расходы этой эмуляции довольно значительны...
28 июн 06, 15:49    [2821877]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
MacDuck
Member

Откуда: Москва-Подольск
Сообщений: 6399
andrey_anonymous
Господа, у меня образовалось немного времени и со страшной силой потянуло на философию :)


Иди рождение сына обмывай и жену поздравляй! На философию его потянуло....
ТЫ обязан уже мертвецки пьяным быть!
28 июн 06, 15:55    [2821913]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3882
andrey_anonymous

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

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

Лично мне еще не хватает возможности создания бОльшего числа buffer pool'ов, подсмотрено опять же у DB2.
28 июн 06, 16:10    [2821997]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
!
Guest
автор
Господа, у меня образовалось немного времени


По ходу оно у тебя никогда и не прекращалось...:)
28 июн 06, 16:17    [2822052]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
miner
Member

Откуда: Moscow
Сообщений: 212
andrey_anonymous
Господа, у меня образовалось немного времени и со страшной силой потянуло на философию :)

Видать отпуск по уходу взял на 3 года )))

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

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

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

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

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

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


Вообще же мне интересным представляется открытый проект создания СУБД, причём не обязательно сразу на уровне реализации
, а последовательно, начиная с требований к инфраструктуре организации такой работы и переходя к требованиям к самой системе (архитектуре и элементам) и затем к их реализации.
Предвижу сразу массу возражений связанных с тем, что подобные проекты уже существуют
, но здесь могу сказать сразу, что в России мне такие не известны.
К томуже не забывайте, что мы просто философствуем (я лично с холодным Zipferom) :)
Если проект будет успешным даже на уровне спецификации, то он вполне может развиваться в рамках какого либо вуза (есть же пример FreeBSD).
Ещё один довод - слышал в новостях что правительство обеспокоено засильем вражеского ПО в стратегически важных отраслях народного хозяйства, так что потребность есть - нет предложения (на лицо револющионная ситуация).
28 июн 06, 20:50    [2823110]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Yuri Kazakoff
Member

Откуда: Североморск
Сообщений: 170
Чтобы можно было сделать так:

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 так можно. Со всеми вытекающими. Вначале кривился, а потом понравилось.

А ещё чтобы в Оракл встроили Си, как Джаву встроили.
28 июн 06, 20:58    [2823125]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Barkovsky
Member

Откуда: Санкт-Петербург
Сообщений: 2655
я давно говорю, что мне в оракле не хватает большой кнопки: "решить проблему".
28 июн 06, 21:19    [2823176]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
OracleX
Member

Откуда:
Сообщений: 2008
Мне хотелось бы иметь элегантный способ для Insert (Update) одной записи в БД
через механизм вызова PL/SQL подпрограмм.

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

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

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 код,
уменьшить размер обоих, унифицировать прикладной код.

Актуально для задач, связанных с работой пользователя по добавлению/обновлению
одиночных записей в БД (бухгалтерия, склад, операционный день и т.п.)
29 июн 06, 01:15    [2823551]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
biv2
Guest
мне бы многово бы хотелось (несмотря на все достоинства оракл громозкий)
но что в первую очередь это простую конструкцию вида

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 , присвоение переменой
29 июн 06, 11:03    [2824438]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Sergey M
Member

Откуда: г. Барнаул
Сообщений: 3596
Мне бы лично хотелось иметь встроенную конструкцию наподобие LIMIT в MySql. Знаю что без этого обойтись можно но тем не менее было бы приятно.
29 июн 06, 11:54    [2824780]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Tolmachov Dmitiry
Member

Откуда: Москва, Пенза
Сообщений: 1520
А мне бы хотелось, чтобы при работе с будущим релизом Oracle у меня уже была возможность вызвать секретаршу, попросить сделать мне кофе или чего-нибудь еще...
29 июн 06, 11:54    [2824781]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Stax.
Guest
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
29 июн 06, 12:36    [2825086]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Takurava
Member

Откуда:
Сообщений: 1749
Чтобы можно было написать
select DIR, count(*)
  from dir_size
  group by 1
вместо
select DIR, count(*)
  from dir_size
  group by DIR
29 июн 06, 14:29    [2825941]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Grami
Member

Откуда: Москва
Сообщений: 451
Мне лично весьма не хватает
1. Партиционированных таблиц в индексном кластере (хочеца в кластере хранить Большие таблицы)
2. Возможности создать IOT таблицу при composite партиционировании

:)
29 июн 06, 15:44    [2826479]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
SERG1257
Member

Откуда:
Сообщений: 2490
miner
Мне лично не хватает "временн'ых" данных, видимо это должен быть особый тип таблицы

А Workspace Management это случаем не то что вам надо?


Yuri Kazakoff

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

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

Хотя если честно фич хватает, хочется чтобы имеющиеся фичи работали. А то июнь заканчивается а патча на последнюю большую дырку все нет.
29 июн 06, 19:57    [2827940]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Stax.
Guest
как я мог забыть (позор на мою голову)
0.0
порядок срабатывания триггеров
.....
stax
29 июн 06, 20:52    [2828100]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
афтор
Guest
Хотелось бы уметь апдейтить вcю строку, не перечисляя столбцов

update ТАБЛ x
set VALUE(x) = l_row(i)
where ...
29 июн 06, 21:17    [2828170]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27101
афтор
Хотелось бы уметь апдейтить вcю строку, не перечисляя столбцов
set VALUE(x) = l_row(i)
RTFM Updating the Database with PL/SQL Record Values (FAQ)
29 июн 06, 21:23    [2828187]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
афтор
Guest
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)
29 июн 06, 21:39    [2828229]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 8542
афтор
Так и здесь
Oracle® Database PL/SQL User's Guide and Reference 10g Release 2 (10.2)


Так и здесь

SY.
29 июн 06, 21:46    [2828237]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 89737
2andrey_anonymous: Отличная тема.
Я реальный человек и не хватает мне вещей, которые , мне кажется скоро появятся. Многого не прошу :-)
1. Наведение порядка в ANSI- синтакисе джойнов.
2. INSERT - SELECT - RETURNING. Не понятно, почему не доделают.
3. Расширение скалярных подзапросов до нескольких колонок.
4. Дальнейшее совершенствование CASE - структур.
5. Дальнейшее совершенствование регулярных выражений.
29 июн 06, 21:49    [2828241]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
miner
Member

Откуда: Moscow
Сообщений: 212
SERG1257

А Workspace Management это случаем не то что вам надо?

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

Да, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.
30 июн 06, 01:37    [2828535]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Yuri Kazakoff
Member

Откуда: Североморск
Сообщений: 170
а ещё бесит, что rman вываливает стотысячмиллионовмиллиардовсекстильонов сообщений:

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>

И предыдущие команды по полчаса ищешь...
30 июн 06, 09:59    [2828957]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Grami
Member

Откуда: Москва
Сообщений: 451
miner
Да, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.


Присоединяюсь + отмена ограничения на 1000 элементов в in (...)
30 июн 06, 11:02    [2829394]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
grexhide
Member [заблокирован]

Откуда: Страна непреодолимых противоречий
Сообщений: 8561
Grami
miner
Да, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.


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


Надмозги за работой ?
30 июн 06, 11:05    [2829407]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Grami
Member

Откуда: Москва
Сообщений: 451
grexhide
Grami
miner
Да, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.


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


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


Непонял?
30 июн 06, 14:35    [2830786]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
rvk
Member

Откуда:
Сообщений: 60
Хотелось, чтобы если при INSERT отваливается unique constraint возвращался rowid существующей записи или само значение уникального ключа.
2 июл 06, 17:34    [2834317]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Yuri Kazakoff
Member

Откуда: Североморск
Сообщений: 170
Grami
miner
Да, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.


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


А, может, проще сделать временную табличку, куда записать все 1000 и более строк, а потом её соединить с основной табличкой? Вот и результат будет. А то 1000 и более OR-ов как-то некрасиво.
3 июл 06, 11:09    [2835477]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Хочется возможность bulk-ом загружать в поле "index by" :)
3 июл 06, 11:15    [2835508]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Ненавижу регистрацию
Member

Откуда:
Сообщений: 260
Не хватает вьюх с параметрами. Я имею в виду следущее. Зачастую, вместо того, чтобы писать PL/SQL-функцию, хочется определить вьюху с параметрами:
create view v(p1 number, p2 number)
as
select '=' eq from dual where p1 = p2;

select * from v(1, 2);
3 июл 06, 14:15    [2836772]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Чтобы из MERGE убрали дурацкое ограничение про stable set of rows...
Ну не пофигу ораклу, чтобы из одной строки источника проапдейтились 10 строк таблицы?
3 июл 06, 14:21    [2836827]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Grami
Member

Откуда: Москва
Сообщений: 451
Yuri Kazakoff
Grami
miner
Да, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.


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


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


Зато работает вместо двух минут - одну секунду.
3 июл 06, 15:38    [2837285]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
m_kus
Member

Откуда: Екатеринбург
Сообщений: 306
constraint FkChildtoMaster foreign key (IdMaster) references Master(Id)
ERROR MESSAGE 'В таблице Child есть поорождённые записи'
4 июл 06, 06:00    [2839142]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
m_kus
constraint FkChildtoMaster foreign key (IdMaster) references Master(Id)
ERROR MESSAGE 'В таблице Child есть поорождённые записи'


Есть такое во всех уважающих себя клиентах.
Это не задача сервера, а задача клиента - отобразить на нужном языке сообщение об ошибке.
4 июл 06, 08:43    [2839290]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
rvk
Хотелось, чтобы если при INSERT отваливается unique constraint возвращался rowid существующей записи или само значение уникального ключа.


LOG ERRORS CLAUSE
4 июл 06, 08:47    [2839294]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Jannny
Хочется возможность bulk-ом загружать в поле "index by" :)


Дык тогда он перестанет быть bulk-ом
Если надо, перелить всегда можно.
4 июл 06, 08:48    [2839298]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Ненавижу регистрацию
Не хватает вьюх с параметрами. Я имею в виду следущее. Зачастую, вместо того, чтобы писать PL/SQL-функцию, хочется определить вьюху с параметрами:
create view v(p1 number, p2 number)
as
select '=' eq from dual where p1 = p2;

select * from v(1, 2);


Было бы хорошо, но от такого оптимизатор свихнется, думаю.
Обычно для параметризованных вьюх (вовсю пользовали на прошлой работе через пакетные переменные) нужно не только использование параметров, но и разная логика, в зависимости от них, т.е. вьюхи получались сильно перегруженными логикой.
Пусть бы вместо уродского энидатасета сделали определение типа возвращаемого курсора во время исполнения (ну, и глюки из пайплайн-функций поубирали).
4 июл 06, 08:56    [2839309]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
andrey_anonymous
Господа, у меня образовалось немного времени и со страшной силой потянуло на философию :)
И размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?
Кто не против отвлеченной философии - присоединяйтесь :)

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

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

insert into table x 
select ... from 
    table( delete table y where ... ) 
where... [group by...];

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


Это при single-subscriber.
Тогда уж и до кучи (для multi-subscriber):
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 ...)

4 июл 06, 09:03    [2839321]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Yuri Kazakoff
Grami
miner
Да, забыл, неплохо бы смотрелись переменные связывания - массивы для использования с in.


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


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


Сделал 2000 через union all - сервак сказал, что такую х*ню парсить не будет, шаред жалко. И правильно сделал - 1000 в in - это только DSQL, в нем лучше включить голову, чем таких конструкций от оракла домогаться.
4 июл 06, 09:06    [2839327]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Takurava
Чтобы можно было написать
select DIR, count(*)
  from dir_size
  group by 1
вместо
select DIR, count(*)
  from dir_size
  group by DIR


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

фтопку!
4 июл 06, 09:17    [2839342]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Sergey M
Мне бы лично хотелось иметь встроенную конструкцию наподобие LIMIT в MySql. Знаю что без этого обойтись можно но тем не менее было бы приятно.


rownum, что-ли?
4 июл 06, 09:18    [2839349]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

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

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


Да-да-да-да!!!
И еще быстрое сравнение диапазонов по двум полям вида:
range(sysdate-1,sysdate+1) intersects range(dt_1,dt_2)
с помощью специальных индексов.
4 июл 06, 09:21    [2839364]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Stax.
как я мог забыть (позор на мою голову)
0.0
порядок срабатывания триггеров
.....
stax


Мля-2. Как с этим потом другие разработчики будут разбираться! Это же полностью жопный способ спроектировать что-до - ты бы еще GO TO пожелал...
4 июл 06, 09:33    [2839388]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
афтор
Хотелось бы уметь апдейтить вcю строку, не перечисляя столбцов

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


КГ/..
При накатывании патчей порядок столбцов на разработческой базе и у клиента разный. У разных клиентов тоже может быть разный.
фтопку.
4 июл 06, 09:35    [2839395]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Я
Guest
RA\/EN
Ну ты разошелся :)
4 июл 06, 09:42    [2839422]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Takurava
Member

Откуда:
Сообщений: 1749
RA\/EN
а потом нормальные разработчики с таким кодом днями будут трахаться и тибидохаться, когда ты напишешь
select v1.*

Скорее так напишет НЕнормальный разработчик
4 июл 06, 10:15    [2839560]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Takurava
RA\/EN
а потом нормальные разработчики с таким кодом днями будут трахаться и тибидохаться, когда ты напишешь
select v1.*

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


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

Даже если написать v1.a,v1.b,v1.c,v1.d - сути это не меняет.
4 июл 06, 10:48    [2839765]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Takurava
Member

Откуда:
Сообщений: 1749
RA\/EN
Даже если написать v1.a,v1.b,v1.c,v1.d - сути это не меняет.

А почему, если написать
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, запрос перестанет правильно работать?
4 июл 06, 11:05    [2839864]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 51098
Блог
Sergey M
Мне бы лично хотелось иметь встроенную конструкцию наподобие LIMIT в MySql. Знаю что без этого обойтись можно но тем не менее было бы приятно.

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

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

Полагаю, если бы Oracle предложил хорошее стандартное решение проблемы pagination (или как она там), это было бы здорово. Ну а LIMIT - "решение, которым не следует пользоваться", соответственно нафиг надо.
4 июл 06, 11:35    [2840042]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Takurava
RA\/EN
Даже если написать v1.a,v1.b,v1.c,v1.d - сути это не меняет.

А почему, если написать
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).
4 июл 06, 13:10    [2840505]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
NightGhost
Member

Откуда:
Сообщений: 629
Так и не понял можно ли обойти на мой взгляд глупое ограничение
пр ивыполнении динамического запроса с использованием DBMS_SQL
ограничение касается того что нельзя
сделать бинд входного массива и бинд выходного массива

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

Кстати если у кого есть решение данной прболемы буду признателен
кинте плиз ссылочку
popov_art@mail.ru
11 сен 06, 23:44    [3121553]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27101
NightGhost
тоесть нельзя хотеть в SQL select забиндидь массив и получить тоже массив
begin select value into :value from t where id = :id; end;
12 сен 06, 00:24    [3121604]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
О! Нашелся топик.
Хочу от оракла индексы и явное управление превращением подзапроса в темповую таблицу в конструкции with, а так же разрешать в списке with неиспользуемые подзапросы:

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, только повторно используемый.

 create with_table q1 as (select * from dual) index q1_i(dummy)
 /
 drop with_talbe q1
 /
И все это не DDL.
Хотя это вызовет проблемы с компиляций, но, если, например, определять это структурой курсора в коде... Просто не всегда удобно в вычислительных задачах таскать за собой скрипты с кучей темповых таблиц, а если генерить их в рантайме, то все съезжает в DSQL из-за раскомпиляции.
12 сен 06, 09:18    [3122063]     Ответить | Цитировать Сообщить модератору
 Re: java книги, обмен, советы, eBook  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3729
Явное превращение в темп
/*+ materialize*/
противоположное ему
/*+ inline*/
только все недокументировано :(
12 сен 06, 10:34    [3122508]     Ответить | Цитировать Сообщить модератору
 Re: java книги, обмен, советы, eBook  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Timm
Явное превращение в темп
/*+ materialize*/
противоположное ему
/*+ inline*/
только все недокументировано :(


Да, век живи-век учись...
Нарыл описание ( претендующее на полноту ) хинтов оракла, буду пытаться разобраться, что это такое.
http://www.adp-gmbh.ch/ora/sql/hints.html
12 сен 06, 11:11    [3122746]     Ответить | Цитировать Сообщить модератору
 Re: java книги, обмен, советы, eBook  [new]
grexhide
Member [заблокирован]

Откуда: Страна непреодолимых противоречий
Сообщений: 8561
RA\/EN

Да, век живи-век учись...


Да.... мощная конструкция... Интересно, насколько она легальна ?
12 сен 06, 11:28    [3122872]     Ответить | Цитировать Сообщить модератору
 Re: java книги, обмен, советы, eBook  [new]
Гость1111
Guest
Timm
Явное превращение в темп
/*+ materialize*/
противоположное ему
/*+ inline*/
только все недокументировано :(


А каким образом данный хинт юзать?
в запросах типа with lalala as... ?
как проверить что данный хинт действительно пашеть?
12 сен 06, 11:55    [3123106]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Владимор Конев
Member

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

  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
12 сен 06, 11:58    [3123141]     Ответить | Цитировать Сообщить модератору
 Re: java книги, обмен, советы, eBook  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
grexhide
RA\/EN

Да, век живи-век учись...


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


Кайт говорит, что обходится rownum>0, но это не совсем то, что хинт - на примере Владимира не материализует.
12 сен 06, 12:01    [3123165]     Ответить | Цитировать Сообщить модератору
 Re: java книги, обмен, советы, eBook  [new]
contr
Member

Откуда:
Сообщений: 1909
RA\/EN
grexhide
RA\/EN

Да, век живи-век учись...

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

Кайт говорит, что обходится rownum>0, но это не совсем то, что хинт - на примере Владимира не материализует.

Кайт пользуется для другого, а именно - для получения VIEW.
Соответствующий хинт - /*+no_merge*/
12 сен 06, 12:34    [3123502]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
iamhere
Member

Откуда:
Сообщений: 187
Доменов немножко не хватает, чтобы один раз описать CHECK CONSTRAINT и потом просто использовать получившийся домен (BOOLEAN, PHONE_NUMBER, etc) везде, где надо.

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

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

Не хватает возможности получить автоматом приблизительную оценку длительности/progress'а длинной операции.
12 сен 06, 12:40    [3123550]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 89737
О ! Вспомнил.

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

Оффтоп. Внимание ! Название темы частично "заражено" .
(Timm, по- моему это Вы - что за ebookи ? )
12 сен 06, 12:46    [3123616]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
contr
Member

Откуда:
Сообщений: 1909
iamhere
Не хватает возможности получить перечень ошибок для DEFERRED CONSTRAINT.
??? Что имелось ввиду?
iamhere

Не хватает возможности получить автоматом приблизительную оценку длительности/progress'а длинной операции.

v$session_longops
12 сен 06, 12:47    [3123626]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
grexhide
Member [заблокирован]

Откуда: Страна непреодолимых противоречий
Сообщений: 8561
iamhere

Не хватает возможности получить автоматом приблизительную оценку длительности/progress'а длинной операции.


V$SESSION_LONGOPS, dbms_application_info.set_session_longops в т.ч.
12 сен 06, 12:49    [3123643]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
iamhere
Member

Откуда:
Сообщений: 187
contr
iamhere
Не хватает возможности получить перечень ошибок для DEFERRED CONSTRAINT.
??? Что имелось ввиду?


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

contr

iamhere

Не хватает возможности получить автоматом приблизительную оценку длительности/progress'а длинной операции.

v$session_longops


Не то. Это КУСОЧКИ длинной операции :)
Я прекрасно понимаю, что невозможно предсказать это общее время, даже имея всю статистику и план - потому что от даннх зависит. Но все-таки не хватает :)
12 сен 06, 12:54    [3123696]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
grexhide
Member [заблокирован]

Откуда: Страна непреодолимых противоречий
Сообщений: 8561
iamhere

Я прекрасно понимаю, что невозможно предсказать это общее время, даже имея всю статистику и план - потому что от даннх зависит. Но все-таки не хватает :)


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

или тебе привести формулу "предсказания точного времени" ?
12 сен 06, 12:58    [3123741]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
contr
Member

Откуда:
Сообщений: 1909
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, а в нецелевом его использовании ;)
12 сен 06, 13:03    [3123789]     Ответить | Цитировать Сообщить модератору
 Re: java книги, обмен, советы, eBook  [new]
Владимор Конев
Member

Откуда:
Сообщений: 3456
contr
Кайт пользуется для другого, а именно - для получения VIEW.
Соответствующий хинт - /*+no_merge*/
Вот только не всегда сей хинт срабатывает, в отличие от того же ROWNUM...
12 сен 06, 13:38    [3124083]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3729
dmidek
О ! Вспомнил.

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

Оффтоп. Внимание ! Название темы частично "заражено" .
(Timm, по- моему это Вы - что за ebookи ? )

Это все Опера :)
Вот тема про ебуки (там и оракловые книги есть, правда сейчас ниче не доступно)
12 сен 06, 13:43    [3124113]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3729
Timm
Явное превращение в темп
/*+ materialize*/
противоположное ему
/*+ inline*/
только все недокументировано :(

Кстати. По моим наблюдениям temp table transformation появляется сразу же если subquery_factoring_clause используется более одного раза (имхо, это дурацкое решение, попахивает индусами ). Поэтому для "эмуляции" /*+ materialize*/ достаточно добавить union all select 1 from q1 where 1=0 или что то подобное.
А вот с inline все сложнее...
12 сен 06, 15:05    [3124802]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Timm

Кстати. По моим наблюдениям temp table transformation появляется сразу же если subquery_factoring_clause используется более одного раза (имхо, это дурацкое решение, попахивает индусами ). Поэтому для "эмуляции" /*+ materialize*/ достаточно добавить union all select 1 from q1 where 1=0 или что то подобное.
А вот с inline все сложнее...


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

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

with q as (select * from dual  )
select * from q
union all
select * from q where 1=2

а это - дает

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

Вполне логично.
12 сен 06, 16:28    [3125396]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3729
с дьюалом нечестно
12 сен 06, 16:38    [3125478]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Ааз
Member

Откуда: Москва/Протвино
Сообщений: 4274
Timm
Явное превращение в темп
/*+ materialize*/
противоположное ему
/*+ inline*/
только все недокументировано :(
На oracle-l@freelists.org подсмотрел такое
select /*+ OPT_PARAM('_optimizer_cost_based_transformation' 'off') */
Я так понимаю, список параметров можно увидеть в трассе 10053

Всего
12 сен 06, 16:43    [3125507]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Ааз
На oracle-l@freelists.org подсмотрел такое
select /*+ OPT_PARAM('_optimizer_cost_based_transformation' 'off') */
Я так понимаю, список параметров можно увидеть в трассе 10053

Всего


А примерчик реального использования (хотя-бы эффекта) этого хинта можешь подкинуть?
А то навскидку не получается 10-ку убедить хотя-бы в вырубании картезиана, не говоря уж о включении через это хинт режима RULE.
12 сен 06, 17:01    [3125674]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
contr
Member

Откуда:
Сообщений: 1909
RA\/EN
не говоря уж о включении через это хинт режима RULE.

Может, просто /*+ RULE */ попробовать? :)
12 сен 06, 17:03    [3125688]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
contr
RA\/EN
не говоря уж о включении через это хинт режима RULE.

Может, просто /*+ RULE */ попробовать? :)


Это не есть интересно. Я, в принципе, насчет RULE не настаиваю, т.к. разбор конкретно этого хинта, по идее, может быть уже после выбора Cost Model.
12 сен 06, 17:13    [3125749]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
m_kus
Member

Откуда: Екатеринбург
Сообщений: 306
Опять обсмеёте :)
create table t (id integer default seq.nextval%FOREACHROW,
...)
2 ноя 06, 14:31    [3347696]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15380
m_kus
Опять обсмеёте :)
create table t (id integer default seq.nextval%FOREACHROW,
...)
имхо - реальнее не ссылка на последовательность, а
набор параметров как в create sequence с тем, чтобы втихаря она
создалась как зависимый от таблицы объект, мож. быть и не совсем как
последовательность, а гибрид последовательности и первичного ключа
2 ноя 06, 14:45    [3347818]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
mcwhite
Member

Откуда: Москва
Сообщений: 354
andrey_anonymous
Господа, у меня образовалось немного времени и со страшной силой потянуло на философию :)
И размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?
Кто не против отвлеченной философии - присоединяйтесь :)


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

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

Фишка в том, чтобы в коде можно было не указывать явно отдельные поля таблицы, обеспечив тем самым независимость кода от изменения структуры этой таблицы.
2 ноя 06, 15:23    [3348130]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 89737
mcwhite
andrey_anonymous
Господа, у меня образовалось немного времени и со страшной силой потянуло на философию :)
И размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?
Кто не против отвлеченной философии - присоединяйтесь :)


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

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

Фишка в том, чтобы в коде можно было не указывать явно отдельные поля таблицы, обеспечив тем самым независимость кода от изменения структуры этой таблицы.

А разве требуемые Вам значения уже все равно не будут лежать в v_row ?
2 ноя 06, 15:27    [3348177]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
mcwhite
Member

Откуда: Москва
Сообщений: 354
dmidek
А разве требуемые Вам значения уже все равно не будут лежать в v_row ?

Пример, конечно же, до предела тривиальный, потому как не в конкретном операторе дело.

Ещё раз: проблема в том, что нельзя избавиться от явного перечисления полей в предложении RETURNING при работе с записями.
2 ноя 06, 15:31    [3348211]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Sevick
Member

Откуда: из-за компа
Сообщений: 834
Barkovsky
я давно говорю, что мне в оракле не хватает большой кнопки: "решить проблему".



Как это нет?
Просто доку невнимательно читали
Она по-умолчанию disabled :))
2 ноя 06, 15:31    [3348217]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3729
Захотелось:
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'е.
11 апр 07, 12:15    [4005378]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Timm
Захотелось:
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 в сях не устраивал ночную медитацию перед монитром?)
11 апр 07, 12:41    [4005585]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15380
RA\/EN
Timm
Захотелось:
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 в сях не устраивал ночную медитацию перед монитром?)

Ну, зло не большее, как любое лекарство.. если применять без_меры/не_к_месту..
11 апр 07, 12:56    [4005699]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 7756
Уже 10 лет хочется классической реализации доменов, как это есть в Oracle Rdb.
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);
...
11 апр 07, 13:10    [4005831]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15380
SQL*Plus
Уже 10 лет хочется классической реализации доменов, как это есть в Oracle Rdb.

+1
11 апр 07, 13:25    [4006010]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Гость11111111
Guest
еще хотел бы MOVE (insert into A + delete from B)...
11 апр 07, 13:28    [4006038]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: На философию потянуло...  [new]
ленивый аноним
Guest
а еще очень надо insert all, но для коллекций объектов. с BULK COLLECT
17 мар 10, 14:17    [8492314]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 4702
andrey_anonymous
"а какого лешегшо мне не хватает в СУБД Oracle"?

Я считаю очень полезной была бы возможность создавать уникальнуй ключ по columns_expression а не просто по columns. Иными словами в Oracle есть отличная фишка FBI, хотелось бы иметь FBUK. :)

Чтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра:
alter table t add constraint UK_FIO unique (lower(F), lower(I), lower(O));
19 авг 10, 15:37    [9291238]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 51098
Блог
dbms_photoshop
Чтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра:

Мне, пожалуй, больше хотелось бы другого:

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);
19 авг 10, 15:51    [9291402]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
-2-
Member

Откуда:
Сообщений: 12956
А вот мне бы хотелось окон по иерархии over(connect by & siblings).

dbms_photoshop
Чтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра
А чем в данном случае FBUK отличается от FBI?
19 авг 10, 15:53    [9291425]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
dbms_photoshop
andrey_anonymous
"а какого лешегшо мне не хватает в СУБД Oracle"?

Я считаю очень полезной была бы возможность создавать уникальнуй ключ по columns_expression а не просто по columns. Иными словами в Oracle есть отличная фишка FBI, хотелось бы иметь FBUK. :)

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

А ради чего? Внешние ключи на такой констрейнт как разруливать?
19 авг 10, 16:04    [9291559]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
softwarer
dbms_photoshop
Чтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра:

Мне, пожалуй, больше хотелось бы другого:

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 на неуникальный индекс? о_О
19 авг 10, 16:09    [9291619]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 4702
softwarer,
Да, такое желание возникает и у меня!

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

-2-
А чем в данном случае FBUK отличается от FBI?
Уже хотелка отпала. ;)
19 авг 10, 16:10    [9291625]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
-2-
А вот мне бы хотелось окон по иерархии over(connect by & siblings).

Суммирование по дереву делать? Пример покажи.
-2-
dbms_photoshop
Чтоб можно было просто делать ограничения вроде: комбианация ФИО дложна быть уникальной независимо от регистра
А чем в данном случае FBUK отличается от FBI?

... а потом оно будет deferred, и на нее будут ссылаться ...
19 авг 10, 16:13    [9291663]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 4702
RA\/EN
FK на неуникальный индекс? о_О

Ну пропустил softwarer ключевое слово одно. Суть то ясна.
19 авг 10, 16:14    [9291669]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
RA\/EN
FK на неуникальный индекс? о_О

Да, кстати:
alter table add constraint check(document_id-trunc(document_id)=document_type)
...
alter table add constraint check(document_id-trunc(document_id)=0.012)

Было дело, не совсем такое, конечно, когда дробными айдишниками проблемы решал.
19 авг 10, 16:20    [9291736]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15380
dbms_photoshop
andrey_anonymous
"а какого лешегшо мне не хватает в СУБД Oracle"?

Я считаю очень полезной была бы возможность создавать уникальнуй ключ по columns_expression а не просто по columns. Иными словами в Oracle есть отличная фишка FBI, хотелось бы иметь FBUK. :)

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

дык 11g вычисляемые поля для этого совершенно подходят
19 авг 10, 16:54    [9292047]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
orawish
дык 11g вычисляемые поля для этого совершенно подходят

/me бьется головой о стол
19 авг 10, 17:52    [9292520]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15380
RA\/EN
orawish
дык 11g вычисляемые поля для этого совершенно подходят

/me бьется головой о стол

три раза прочитал - ни разу не понял..
переведи
20 авг 10, 12:05    [9296643]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17275
Перевожу: я обалдел
22 авг 10, 05:27    [9304679]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17275
Вот же умный, сцуко, антимат
Написал "я о_х_у_е_л", а он с меня "обалдел"
22 авг 10, 05:29    [9304682]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 8542
Grami
Присоединяюсь + отмена ограничения на 1000 элементов в in (...)


Agree, but there is a workaround. Use tuples:

select  *
  from  emp
  where (empno,1) in ((1,1),(2,1),...(1001,1),...)
/

SY.
22 авг 10, 14:47    [9305113]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 7756
В Oracle Database очень не хватает классических доменов (которые есть в Oracle Rdb)
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
 , ... );
Потом, когда потребуется внести изменения, то меняется только домен
ALTER DOMAIN id NUMBER(15);
и все все столбцы таблиц (атрибуты отношений), где этот домен используется, переопределяются уже самой СУБД автоматически.
22 авг 10, 16:08    [9305221]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
RA\/EN
Member

Откуда:
Сообщений: 3645
Вячеслав Любомудров
Перевожу: я обалдел

Неправильно
Перевод "Как до меня не доперло сразу... Бум... Бум... Быдыщ!"
23 авг 10, 08:08    [9306431]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: На философию потянуло...  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 4702
Доколе оптимизатор будет тупить на транзитивном замыкании?
+ Допустим есть две таблицы
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:
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.
25 окт 11, 20:03    [11498637]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Timur Akhmadeev
Member

Откуда:
Сообщений: 499
Stax.
6) кляуза вибрать записи с n по м (не через подзапросы)

Похоже, будет в 12с.
7 мар 12, 22:48    [12213149]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27101
Timur Akhmadeev
Похоже, будет в 12с.
404 Not Found!
8 мар 12, 09:43    [12214080]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Maxim Demenko
Member

Откуда: Munich, Germany
Сообщений: 860
Возможно, автор нарушил NDA для beta tester

Best regards

Maxim
8 мар 12, 11:20    [12214176]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
-2-
Member

Откуда:
Сообщений: 12956
Elic
404 Not Found!
Там лишь упоминалось следование ANSI SQL http://en.wikipedia.org/wiki/Select_%28SQL%29#FETCH_FIRST_clause
8 мар 12, 15:36    [12214877]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27101
-2-
Там лишь упоминалось следование ANSI SQL
Да ладно. Я так думаю, мы все будем просто обязаны писать крутейшим кипятком после явления этой ох...но нужной Фичещи (именно с большой буквы, как Человечище).
8 мар 12, 23:41    [12216406]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2956
С учетом того что "inline view не может быть коррелированным" вполне себе фича.
9 мар 12, 00:27    [12216589]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27101
_Nikotin
С учетом того что "inline view не может быть коррелированным" вполне себе фича.
Ещё раз: да ладно. Это так и не сделали, а то будет, как обычно, глючить года три.
9 мар 12, 00:43    [12216639]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2956
Elic
коррелированным

???
9 мар 12, 00:48    [12216653]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27101
_Nikotin
???
Что-то словарь в опере глючит, а я повёлся...
9 мар 12, 00:52    [12216667]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
_Nikotin
Member

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

А я это взял отсюда 7639237 :)
9 мар 12, 00:54    [12216676]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27101
_Nikotin
А я это взял отсюда 7639237 :)
А я когда-то мог написать неправильно, поэтому никому не верю. Даже себе.
9 мар 12, 00:57    [12216692]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
stax..
Guest
andrey_anonymous
И размышляю я на тему "а какого лешегшо мне не хватает в СУБД Oracle"?


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

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

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

.....
stax
10 мар 12, 12:35    [12220272]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
pravednik
Member

Откуда: Львов
Сообщений: 16258
stax..

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

.....
stax

Думаю, тоже самое что и в ОЕМ 12cloud
10 мар 12, 13:02    [12220361]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
stax..
Guest
pravednik
stax..
ps
не поскажете что в 12 значит с
Oracle Database 12c Enterprise Edition Release 12.1.0.0.1 - 64bit Beta

.....
stax

Думаю, тоже самое что и в ОЕМ 12cloud

странно
cloud -> translate.google.com.ua -> облако

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

.....
stax
10 мар 12, 13:39    [12220457]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
pravednik
Member

Откуда: Львов
Сообщений: 16258
stax..
странно
cloud -> translate.google.com.ua -> облако
ну а чего странного то?
Куда не плюнь - облачные вычисления, облачные то, облачные сё...
10 мар 12, 15:39    [12220776]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
dbrm
Guest
Не хватает штатной возможности ограничивать время выполнения запроса. Штатной = DBRM.
Приходится по-прежнему изобретать велосипед.
switch_time - ограничивает cpu время, а не elapsed, что не позволяет его использовать для решения поставленных задач.
13 мар 12, 18:44    [12242133]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Глупый Телевизор
Member

Откуда: телевизор больше не смотреть (с)
Сообщений: 672
dbrm,

Очень не хватает возможности одним оператором удалять колонки в сжатых (compressed) таблицах.
19 апр 12, 21:28    [12442343]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
-2-
Member

Откуда:
Сообщений: 12956
Глупый Телевизор
Очень не хватает возможности одним оператором удалять колонки в сжатых (compressed) таблицах.
drop table?
19 апр 12, 23:15    [12442832]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4050
А еще в merge возможности удалаять не найденные в цели строки, а также добавлять, изменять и удалять строки в источнике.
20 апр 12, 09:39    [12443540]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Глупый Телевизор
Member

Откуда: телевизор больше не смотреть (с)
Сообщений: 672
-2-
Глупый Телевизор
Очень не хватает возможности одним оператором удалять колонки в сжатых (compressed) таблицах.
drop table?
Я ценю твое чувство юмора.
20 апр 12, 14:08    [12445673]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Глупый Телевизор
Member

Откуда: телевизор больше не смотреть (с)
Сообщений: 672
Сергей Арсеньев
А еще в merge возможности удалаять не найденные в цели строки, а также добавлять, изменять и удалять строки в источнике.
Здесь серьезная тема, а не Comedy Club.
20 апр 12, 14:10    [12445684]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4050
Глупый Телевизор
Здесь серьезная тема, а не Comedy Club.

Никак не могу отойти от дискуссии, является ли создание hash таблицы сортировкой. :)

P.S. А по сути, как иначе одной операцией сделать двунаправленную репликацию таблиц?
20 апр 12, 14:44    [12446034]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 4702
В отдельных случаях связанных с DWH крайне не хватает error logging clause for multi table insert.
26 июл 12, 01:28    [12917195]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: На философию потянуло...  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 4702
Непонятно почему не могут добавить использование exists conditions в if-statements как в MSSQL
create procedure p_test as begin if exists (select 1 where 1 = 0) or 1 > 0 print 'ok' end
16 фев 17, 06:48    [20216169]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27101
dbms_photoshop
exists conditions в if-statements
Это, по сути, лишь синтаксический сахар.
IF( EXISTS...) в процедуре
16 фев 17, 07:44    [20216235]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Yo.!
Guest
dbms_photoshop
Непонятно почему не могут добавить использование exists conditions в if-statements как в MSSQL
create procedure p_test as begin if exists (select 1 where 1 = 0) or 1 > 0 print 'ok' end

потому что программисты побить могут. оно exists на момент t1, а на момент t2 уже все иначе. тогда для процедурного языка изобретать уровни изолированности транзакций нужно.
16 фев 17, 10:53    [20216814]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
if my_exists(cursor(...))
Guest
Yo.!,

предифовый селект инту отменяет реад коммитед?
16 фев 17, 11:41    [20217008]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Yo.!
Guest
if my_exists(cursor(...))
Yo.!,

предифовый селект инту отменяет реад коммитед?

селект инту возвращает консистентеный результат (который можно попросить FOR UPDATE), а if exists () никакого смысла не несет. на момент t2 может проверка актуальна, может нет. а может это дворник злой (тм)
16 фев 17, 12:37    [20217285]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
-2-
Member

Откуда:
Сообщений: 12956
Yo.!
селект инту возвращает консистентеный результат (который можно попросить FOR UPDATE)
И что же он проforupdateит на случай отсутствия или присутствия незакомиченных данных?
Вопросы изоляции требуют решения независимо от наличия "синтаксического сахара".
16 фев 17, 12:49    [20217343]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 4702
Elic
dbms_photoshop
exists conditions в if-statements
Это, по сути, лишь синтаксический сахар.
IF( EXISTS...) в процедуре
Я не спорю. Но если есть условие вида
if expr
and exists ()
and exists ()
and exists ()
то может понадобиться уже три вложенных цикла по курсорам.
А если заменить and на or становится еще интереснее.
Yo.!
dbms_photoshop
Непонятно почему не могут добавить использование exists conditions в if-statements как в MSSQL
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 даже для одной строки мало кого смущает.
Может есть идеи почему бы Ораклу не было изначально сделать, чтоб функция вела себя согласованно как орператор?

Еще как аргумент можно привести что у Оракла могут быть дополнительные трудности с порядком вычисления условий.
Но это не непреодолимые препятствия.
16 фев 17, 13:39    [20217625]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27101
dbms_photoshop
то может понадобиться уже три вложенных цикла по курсорам.
А если заменить and на or становится еще интереснее.
Ты не понял паттерна. Все SQL-условия прописываются в одном запросе.
16 фев 17, 13:52    [20217690]     Ответить | Цитировать Сообщить модератору
 Re: На философию потянуло...  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 51098
Блог
dbms_photoshop
Может есть идеи почему бы Ораклу не было изначально сделать, чтоб функция вела себя согласованно как орператор?

Тогда ему как минимум пришлось бы делать функции read-only, как в MSSQL, что куда тупее. А в целом, если закопаться в историю развития, думаю, и здесь ноги окажутся растущими из тупой идеи "работает - не трогай" разделения SQL- и PLSQL-движков.
16 фев 17, 13:53    [20217695]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5 6      [все]
Все форумы / Oracle Ответить