Спасибо за все. У меня возникают проблемы с последовательностью PL/SQL, которая встроена в конструкторы объектов, которые не увеличиваются, как ожидалось.Oracle PL/SQL Последовательность не увеличивается, как ожидалось, с конструкторами объектов
Это создание последовательности.
CREATE SEQUENCE base_t_s
START WITH 1
INCREMENT BY 1;
Затем я увеличиваю его внутри объектов-конструкторов. Объект Base_t - супер, а все остальные - дочерний объект base_t.
base_t конструктор
CONSTRUCTOR FUNCTION base_t RETURN SELF AS RESULT IS
BEGIN
self.oid := base_t_s.NEXTVAL; -- Create oid using the base_t_s sequence.
self.name := 'BASE_T'; -- Name the oname as the object type.
self.oname := 'BASE_T';
RETURN;
END base_t;
хоббит конструктор
CONSTRUCTOR FUNCTION hobbit (a_name VARCHAR2) RETURN SELF AS RESULT IS
BEGIN
/* Assign a sequence value and string literal to the instance. */
self.oid := base_t_s.NEXTVAL;
self.oname := 'HOBBIT';
self.genus := 'HOBBITS';
/* Assign a parameter to the subtype only attribute. */
self.name := a_name;
RETURN;
END;
создать несколько хоббиты, и я получаю первое приращение 3, то каждое приращение затем есть на 16. Этот пример является с карликами, но это то же самое для каждого объекта.
Это выход. Я создал эти объекты только в том порядке, в котором они находятся.
DWARF(3, 'Thorin Oakenshield', 'DWARF', 'DWARVES')
DWARF(19, 'Thorin Oakenshield', 'DWARF', 'DWARVES')
DWARF(35, 'Thorin Oakenshield', 'DWARF', 'DWARVES')
DWARF(51, 'Thorin Oakenshield', 'DWARF', 'DWARVES')
Я бросаю последовательность перед каждым прогоном. Я попытался только поместить base_t_s.NEXTVAL в конструктор base_t, но это не сработало.
Любая помощь была бы принята с благодарностью.
* Обратите внимание, что последовательность событий непредсказуема из-за вызовов конструктора.
Я пробовал 'NOCACHE' без успеха. Спасибо, что информация о последовательности не является надежной. Будет хорошо знать в будущем. Спасибо, что связали блог. Мне нужно будет это изучить. – VERNSTOKED
@VERNSTOKED, последовательности чрезвычайно надежны, если вы полагаетесь только на то, что они делают то, что они должны делать (генерируют уникальные значения). –
Мне нужно будет продолжить отладку моего кода. Я не выполняю никаких заявлений TCL, поэтому я не могу не думать, что они должны действовать нормально. – VERNSTOKED