У меня есть тип объекта с конструктором без аргументов, но когда я указываю его как значение по умолчанию для столбца этого типа, я получаю сообщение ORA-00904: ошибка неверного идентификатора.
Пример:
CREATE OR REPLACE TYPE test_t AS OBJECT ( val NUMBER(10), CONSTRUCTOR FUNCTION test_t return self as result ) CREATE OR REPLACE TYPE BODY test_t AS CONSTRUCTOR FUNCTION test_t RETURN SELF AS RESULT IS BEGIN val := 1; RETURN; END; END; CREATE TABLE test_table ( test_attr test_t DEFAULT new test_t() ) Error: ORA-00904: "INKA"."TEST_T"."TEST_T": invalid identifier
Если я заменю DEFAULT, например, на test_t(1), это работает, но это нарушает парадигму объектно-ориентированной инкапсуляции, я хочу, чтобы все поля одного типа имели одинаковые «значения по умолчанию» по умолчанию (надеюсь, вы понимаете, что я имею в виду :-)
Я что-то упустил здесь, или это нормально и нельзя использовать такие конструкторы не по умолчанию?