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

Откуда: из самоизоляции
Сообщений: 286
Hi!
Есть Sequence A. Проводим тест:

SQL> Select S.Nextval A from dual;

         A
----------
     28872

SQL> Select A from (Select S.Nextval A from dual);
Select A from (Select S.Nextval A from dual)
                        *
ошибка в строке 1:
ORA-02287: порядковый номер здесь недопустим


Вопросы:
1. Фигли?
2. Как обойти без использования функций? Может есть какой общеизвестный метод?
28 ноя 13, 16:58    [15207318]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
-2-
Member

Откуда:
Сообщений: 15330
TRust
1. Фигли?
обусловлено тем, что несколько использований даст одно значение на строку резульатата.
иначе можно просрать весь сиквенс одним нечаянным запросом.
здокументировано.
28 ноя 13, 17:14    [15207430]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
stax..
Guest
-2-
TRust
1. Фигли?
обусловлено тем, что несколько использований даст одно значение на строку резульатата.
иначе можно просрать весь сиквенс одним нечаянным запросом.
здокументировано.

какая разница просрать весь сиквенс одним нечаянным запросом или одним нечаянным подзаросом?

......
stax
28 ноя 13, 19:01    [15207954]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
-2-
Member

Откуда:
Сообщений: 15330
stax..
какая разница просрать весь сиквенс одним нечаянным запросом или одним нечаянным подзаросом?
результат запроса обычно детерминирован, а подзапроса зависит от плана.
28 ноя 13, 19:02    [15207961]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
stax..
Guest
-2-
stax..
какая разница просрать весь сиквенс одним нечаянным запросом или одним нечаянным подзаросом?
результат запроса обычно детерминирован, а подзапроса зависит от плана.

ет понятно, я насчет просрать нечаянно
или нечаянно, ето о разных планах?

.....
stax
28 ноя 13, 19:26    [15208042]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
new_one
Member

Откуда:
Сообщений: 4443
-2-
stax..
какая разница просрать весь сиквенс одним нечаянным запросом или одним нечаянным подзаросом?
результат запроса обычно детерминирован, а подзапроса зависит от плана.

А это как?
В чем недетерминированность под запроса?
28 ноя 13, 19:39    [15208117]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
new_one,

Потому что неизвестно сколько раз он выполнится
28 ноя 13, 19:50    [15208159]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Или вообще исчезнет :)
28 ноя 13, 19:51    [15208161]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
new_one
-2-
пропущено...
результат запроса обычно детерминирован, а подзапроса зависит от плана.

А это как?
В чем недетерминированность под запроса?

да бросьте. даже если бы он и был детерминирован - нельзя, значит нельзя.
так было и так будет. кстати, того, что есть - ~всем хватает
28 ноя 13, 19:55    [15208181]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
Детерминатор
Guest
orawish
да бросьте. даже если бы он и был детерминирован - нельзя, значит нельзя.
так было и так будет. кстати, того, что есть - ~всем хватает
Ай, бросьте, orawish...
Когда-то такое
select (select dummy z from (select dummy y from dual where dummy = d.dummy)) z from dual d
низзя было делать. А щас уже можно... Надо будет, допилят. Я никаких логических преград не вижу.
Какая разница детерминирован или нет, сколько раз выполнится и выполнится ли вообще.
Единственное, против чего не попрешь - сказали нельзя, знач нельзя
28 ноя 13, 20:14    [15208261]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
-2-
Member

Откуда:
Сообщений: 15330
Детерминатор
Когда-то такое
select (select dummy z from (select dummy y from dual where dummy = d.dummy)) z from dual d
низзя было делать. А щас уже можно...
список версий "сейчас" приложи, с указанием патчсетов.
28 ноя 13, 20:24    [15208301]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10041
Детерминатор
Какая разница детерминирован или нет, сколько раз выполнится и выполнится ли вообще.


Ну а это ничего что сегодня:

create sequence s;
Select A from (Select ename,S.Nextval A from emp) where ename = 'KING';


вернет 1. А завтра возможно 9? Да и вообще, для чего нужен NEXTVAL в подзапросе/inline view?

SY.
28 ноя 13, 20:27    [15208315]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
stax..
Guest
SY
вернет 1. А завтра возможно 9?
SY.

не катит, ведь select s.nextval from dual
тож вернет 1. А завтра возможно 9, а ведь работает

.....
stax
28 ноя 13, 20:48    [15208377]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
Детерминатор
Guest
-2-
список версий "сейчас" приложи, с указанием патчсетов.
Да, конешно. 12.1.0.1
SY
Ну а это ничего что сегодня:
create sequence s;
Select A from (Select ename,S.Nextval A from emp) where ename = 'KING';
вернет 1. А завтра возможно 9? Да и вообще, для чего нужен NEXTVAL в подзапросе/inline view? SY.
Я не вижу абсолютно ничего постыдного в этой разнице. Для чего нужен? Так сразу запрос не придумаешь, но ведь дело не в семантике, а в наличии возможности.
За "придумать зачем" не заржавеет, это вопрос времени. И не нужно сразу потенциальные варианты списывать на кривизну дизайна, как это делал некий советский инженер об аналитических функциях.
Инструментарий должен постоянно расширяться, как бы широк он ни был. Не принимайте за личное, но пока что вашу реакцию я списываю на закостенелость
28 ноя 13, 20:56    [15208397]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10041
stax..,

Проблема проста как яйцо. Независиио от того решит ли оптимизатор materialize подзапрос или merge подзапрос результат должен быть тот-же. A c NEXTVAL в подзапросе не позволяет этого.

SY.

Сообщение было отредактировано: 28 ноя 13, 21:01
28 ноя 13, 21:00    [15208407]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10041
Детерминатор
Я не вижу абсолютно ничего постыдного в этой разнице.


Т.e. это нормально если тот-же select над той-же таблицей и последовательнтью начинающейся с того-же числа может выдать разный результат???

SY.
28 ноя 13, 21:17    [15208453]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
stax..
Guest
SY
stax..,

Проблема проста как яйцо. Независиио от того решит ли оптимизатор materialize подзапрос или merge подзапрос результат должен быть тот-же. A c NEXTVAL в подзапросе не позволяет этого.
SY.

я согласен шо при разних планах получим разные результаты, но ето должен понимать и кодер, ведь от планов могут зависеть и некоторые запросы, напр с random, c недетерминированными функциями

.....
stax
28 ноя 13, 21:20    [15208458]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10041
stax..
я согласен шо при разних планах получим разные результаты, но ето должен понимать и кодер, ведь от планов могут зависеть и некоторые запросы, напр с random, c недетерминированными функциями


Ну вот Oracle и закрывает такие дыры где это явно.

SY.
28 ноя 13, 21:30    [15208483]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
stax..
Guest
SY
stax..
я согласен шо при разних планах получим разные результаты, но ето должен понимать и кодер, ведь от планов могут зависеть и некоторые запросы, напр с random, c недетерминированными функциями


Ну вот Oracle и закрывает такие дыры где это явно.

SY.

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

.....
stax
28 ноя 13, 21:35    [15208494]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
мультитабс инсерт
Guest
ну разрешат, плач про подзапросы сменится на негодование, что запрос возвращает одну строку, а сиквенс скакнул на миллион.

кто-то по незнанию пытается подзапросом решить несуществующую проблему обращения к значению дважды за строку. но возможно подзапрос пригодился бы для присвоения одинакового ид группам строк.
28 ноя 13, 21:56    [15208539]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
Детерминатор
Guest
SY
Проблема проста как яйцо. Независиио от того решит ли оптимизатор materialize подзапрос или merge подзапрос результат должен быть тот-же. A c NEXTVAL в подзапросе не позволяет этого.SY.
SY
Т.e. это нормально если тот-же select над той-же таблицей и последовательнтью начинающейся с того-же числа может выдать разный результат???SY.


Если я правильно понял...
Если проблема в том, что сегодня 1, а завтра 9 потому что сиквенс увеличился... То тут подзапрос ничем не отличается от запроса.
Если же в том, что стартуя с одного и того же номера Кингу будет соответствовать разное значение сиквенса, присвоенного где-то в середине стадии выполнения запроса в целом, то это НЕПРАВИЛЬНО. Но это проблема реализации функционала. Сиквенс должен присваиваться на конечном этапе готового кортежа подзапроса. По крайней мере в соответствии со здравым смылсом. Насколько я догадываюсь это и есть основная проблема засунуть nextval в подзапрос. Ну а кто говорил что будет легко, если все выглядит так просто?
28 ноя 13, 22:43    [15208725]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Детерминатор
Да, конешно. 12.1.0.1
просто баг...
+ Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
SQL> select (select q1.dummy z from (select dummy y from dual    where    dummy = d.dummy) q1) z from dual d;
select (select q1.dummy z from (select dummy y from dual    where    dummy = d.dummy) q1) z from dual d
               *
ERROR at line 1:
ORA-00904: "Q1"."DUMMY": invalid identifier
28 ноя 13, 23:17    [15208860]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
ten
Member

Откуда: Екатеринбург
Сообщений: 1672
stax..
а мож мне надо шоб результат менялся в зависимомти от плана

Убери из запроса все сортировки + добавь явную зависимость результата от от порядка строк, вот и будет большое человеческое счастье.
29 ноя 13, 08:58    [15209670]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
PooH_2
Member

Откуда:
Сообщений: 266
ten,
а если мне требуются уникальные в рамках одной базы идентификаторы для строк результата, причем без разницы какими будут значения, главное чтоб уникальны.
29 ноя 13, 09:02    [15209676]     Ответить | Цитировать Сообщить модератору
 Re: Использование Sequence в подзапросах  [new]
ten
Member

Откуда: Екатеринбург
Сообщений: 1672
PooH_2,
И в чем проблема присваивать уникальные идентификаторы непосредственно перед выдачей результата?
29 ноя 13, 09:04    [15209679]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить