Там же в документации(прямо по своей же приведенной ссылке гляньте) указано специально про NLS_SORT:
Note: In the POSIX standard, a range includes all collation elements between the start and end of the range in the linguistic definition of the current locale. Thus, ranges are linguistic rather than byte value ranges; the semantics of the range expression are independent of the character set. In Oracle Database, the linguistic range is determined by the NLS_SORT initialization parameter.
Не совсем верно, например, такие задачи часто возникают, когда хотят получить отчет в разрезах по указанным периодам, и для этого часто нужен генератор дат.
with bottle(id, ingredient, measure, quantity) as (
select 1, 'Банан', 'Штука', 3 from dual union all
select 2, 'Петрушка', 'Ветка', 2 from dual union all
select 3, 'Вода', 'Литр', 3 from dual union all
select 4, 'Соль', 'Ложка', 1 from dual union all
select 5, 'Уксус', 'Ложка', 2 from dual
)
select *
from bottle
model
partition by (id)
dimension by(1 n)
measures(ingredient, measure, quantity)
rules(
ingredient[for n from 1 to quantity[1] increment 1] = ingredient[1]
,measure [for n from 1 to quantity[1] increment 1] = measure [1]
,quantity [for n from 1 to quantity[1] increment 1] = quantity [1]
)
Распишу, что сходу вспомню:
1. всевозможные пивотные джойны
1.1 join с большой таблицей(можно встретить all_objects/all_source)
1.2 join с любым генератором(simple pivot, multiset,lateral [до 12c недокументировано])
2. модель (model)
2.1 iterate
2.2 for
3. group by grouping sets/cube/rollup
3.1 select 1 from dual group by cube(1,1,1);
3.2 select 1 from dual group by rollup(1,1,1);
3.3 select 1 from dual group by grouping sets(1,1,1);
4. рекурсия
4.1 connect by
4.2 recursive subquery factoring (with)
5. xmltable, примеры ниже на самом деле однотипные, просто их можно варьировать:
5.1 select * from xmltable('1 to 3' columns n for ordinality);
5.2 select * from xmltable('1 to xs:integer(.)' passing 10 columns n for ordinality);
5.3 select * from xmltable('1 to xs:integer(.)' passing 10 columns n int path '.');
5.4 select * from xmltable('for $N in (1 to 5) for $M in (1 to 3) return $N*$M' passing 10 columns n int path '.');
6. connect by + (dbms_random.value/connect_by_root) [версионно-зависимое, есть еще варианты с sys_guid и тд вместо dbms_random]
PS. простой connect by c dbms_random и тому подобными, т.е. 6-й в моем списке и 3-й из поста, я не советую использовать, причины легко гуглятся.
PPS. еще по теме: blogs.oracle.com/sql/entry/row_generators_part_2
кстати, у меня два монитора — и putty и MobaXTerm растягиваются спокойно на оба монитора, но у них нет горизонтального скролла, поэтому если установить например «stty cols 1500» — строки будут переноситься.
А в console2 это нормльно работает(правда конфиг надо править вручную, т.к. гуи не дают туда вбить большие значения)
Нет, именно про терминалы, как например software.jessies.org/terminator
То есть, чтобы я мог установить ширину терминала шире размера экрана, скажем, раза в три(при нормальном шрифте) и у терминала появлялся горизонтальный скролл.
Например, так:
О чем речь? Причем тут именно секционированные таблицы? Там же ничего отличного от обычной таблицы/индекса — одни и те же сисколлы.
Да и Frits Hoogland кажется там настолько все по косточкам разобрал и для всех разжевал, что непонятно, что там еще интересного есть? Вообще многие пользуются dtrace и systemtap, и Оракл этому никак не препятствует, более того, на оракловых конференциях это спокойно показывается и обсуждается.
Ну почему же, они благодарят и указывают в Credits'ах в описаниях Critical patch update, жаль только, что не платят, но я был рад и указанию своего имени в Credits'aх в CPU по Oracle RDBMS :)
Хотя латчи самого оракла такое иногда вытворяют… и нагрузка на редологи только увеличивает вероятность.
что-то я не понял к чему было про латчи и редулоги? :) Кстати, количество латчей в оракле все уменьшается и уменьшается — все больше механизмов переводится на мьютексы.
Опять не понял вопроса… Отличать что, от чего и зачем? Предполагается, что обработка нужна только для закоммиченных изменений — так она и будет запущена только для закоммиченных изменений. Для незакоммиченных ничего не будет происходить.
Так вот, в триггере на таблице, который пишет в сокет проблема в том
тут опаснее то, что любые проблемы в таком триггере скажутся на самой основной транзакции, которые зачастую стараются делать как быстрее, а все лишнее проводить в асинхронной обработке близкой к реальному времени
Проблема с триггерами и записью в сокет в том, что в оракле нет события (триггера) OnCommit, на которое можно было бы повесить обработчик
есть очень древний подход — раньше в таких случаях делали в триггере dbms_job.submit, который должен вызвать нужную процедуру-хэндлер события. Соответственно, пока основная транзакция не делала коммит — джоб не запускался.
и в 1.2 забыл добавил pipelined генераторы
www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=975092&msg=13293372
Распишу, что сходу вспомню:
1. всевозможные пивотные джойны
1.1 join с большой таблицей(можно встретить all_objects/all_source)
1.2 join с любым генератором(simple pivot, multiset,lateral [до 12c недокументировано])
2. модель (model)
2.1 iterate
2.2 for
3. group by grouping sets/cube/rollup
3.1 select 1 from dual group by cube(1,1,1);
3.2 select 1 from dual group by rollup(1,1,1);
3.3 select 1 from dual group by grouping sets(1,1,1);
4. рекурсия
4.1 connect by
4.2 recursive subquery factoring (with)
5. xmltable, примеры ниже на самом деле однотипные, просто их можно варьировать:
5.1 select * from xmltable('1 to 3' columns n for ordinality);
5.2 select * from xmltable('1 to xs:integer(.)' passing 10 columns n for ordinality);
5.3 select * from xmltable('1 to xs:integer(.)' passing 10 columns n int path '.');
5.4 select * from xmltable('for $N in (1 to 5) for $M in (1 to 3) return $N*$M' passing 10 columns n int path '.');
6. connect by + (dbms_random.value/connect_by_root) [версионно-зависимое, есть еще варианты с sys_guid и тд вместо dbms_random]
PS. простой connect by c dbms_random и тому подобными, т.е. 6-й в моем списке и 3-й из поста, я не советую использовать, причины легко гуглятся.
PPS. еще по теме: blogs.oracle.com/sql/entry/row_generators_part_2
А в console2 это нормльно работает(правда конфиг надо править вручную, т.к. гуи не дают туда вбить большие значения)
То есть, чтобы я мог установить ширину терминала шире размера экрана, скажем, раза в три(при нормальном шрифте) и у терминала появлялся горизонтальный скролл.
Например, так:
Да и Frits Hoogland кажется там настолько все по косточкам разобрал и для всех разжевал, что непонятно, что там еще интересного есть? Вообще многие пользуются dtrace и systemtap, и Оракл этому никак не препятствует, более того, на оракловых конференциях это спокойно показывается и обсуждается.