Как можно развить сигнатуру пользовательской функции конструктора, заданную пользователем?
Учитывая Oracle PL / SQL пользовательский тип, который имеет табличные зависимости, вместо того, чтобы заменять их инструкциями create / replace, которые мне нужны развивать эти типы. Я нашел Oracle документацию о том, как удалять / добавлять атрибуты и удалять / добавлять функции-члены с помощью операторов alter, но я не вижу информации о том, как развить сигнатуру функции конструктора. Мне нужно сделать это без создания новой таблицы / типа и переноса данных в новый обновленный тип. В моем случае использование FORCE также не работает.
Например, учитывая приведенный ниже тип, как я могу обновить определяемую пользователем сигнатуру конструктора, чтобы включить новый параметр для использования во время инициализации?
-- Create new type
CREATE OR REPLACE TYPE test_type AS OBJECT (
test_attribute NUMBER(1, 0),
CONSTRUCTOR FUNCTION test_type(
p_test_attribute NUMBER DEFAULT NULL
)
RETURN SELF AS RESULT
);
-- Make this new type have table dependents
CREATE OR REPLACE TYPE test_type_table
AS TABLE OF test_type;
CREATE TYPE test_child_obj AS OBJECT (
test_type_field test_type_table
);
-- Add new attribute via alter statement
ALTER TYPE test_type
ADD ATTRIBUTE (new_attribute NUMBER)
CASCADE NOT INCLUDING TABLE DATA;
Я хотел бы обновить сигнатуру конструктора следующим образом:
CONSTRUCTOR FUNCTION test_type(
p_test_attribute NUMBER DEFAULT NULL,
p_new_attribute NUMBER DEFAULT NULL
)
RETURN SELF AS RESULT
Я надеялся, что будет оператор alter, подобный следующему, но я не могу найти правильный оператор alter. Пожалуйста, помогите.
ALTER TYPE test_type
ADD CONSTRUCTOR FUNCTION test_type(
p_test_attribute NUMBER DEFAULT NULL,
p_new_attribute NUMBER DEFAULT NULL
)
RETURN SELF AS RESULT
CASCADE NOT INCLUDING TABLE DATA;