Последовательность оракулов предназначена для возврата автоматически увеличивающихся чисел. Мне интересно, могу ли я реализовать настраиваемую последовательность, возвращающуюся из пула значений, который я вставлял, поэтому я могу сказать последовательность, которую, как ожидается, вернется.Как реализовать пользовательскую последовательность оракула?
В любом случае реализовать это? или альтернативу, например добавление триггера или функций oracle или что-то еще?
Или даже использовать таблицу сохранения значения, но как это сделать лучше производительность, как последовательность Oralce
I have this, but not sure is it the best one.
create table your_table(
gap_from int,
gap_to int
);
insert into your_table values(99999, 9998888);
insert into your_table values(2, 7);
insert into your_table values(200, 10000);
insert into your_table values(10001, 300000);
create table2 as select
gap_from,
1 + nvl(sum(gap_to - gap_from + 1) over (order by gap_from rows between unbounded preceding and 1 preceding), 0) as seq_from,
sum(gap_to - gap_from + 1) over (order by gap_from) as seq_to
from your_table;
create sequence your_new_seq;
create or replace function get_PK_inside_gap return number as
new_seq_val number;
PK_inside_gap number;
begin
select your_new_seq.nextval into new_seq_val from dual;
execute immediate '
select
new_seq_val + gap_from - seq_from
from
(select :1 as new_seq_val from dual)
join (
table2
) on new_seq_val between seq_from and seq_to'
into PK_inside_gap using new_seq_val;
return PK_inside_gap;
end;
Это может зависеть от того, что вы хотите получить, можете ли вы привести пример? –
Например, я хочу разработать индивидуальную последовательность, которая возвращает число из диапазонов [2,7], [200,10000], [10001, 300000], [99999,9998888] и т. Д. ... поэтому здесь я хочу чтобы получить автоматическое увеличение с определенного диапазона. –