Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle Alter/Evolve类型用户定义构造函数签名(PL/SQL)_Oracle_Plsql_Constructor_Alter - Fatal编程技术网

Oracle Alter/Evolve类型用户定义构造函数签名(PL/SQL)

Oracle Alter/Evolve类型用户定义构造函数签名(PL/SQL),oracle,plsql,constructor,alter,Oracle,Plsql,Constructor,Alter,如何发展用户定义的构造函数签名 给定一个具有表依赖项的Oracle PL/SQL用户定义类型,我需要改进这些类型,而不是用create/replace语句替换它们。我通过alter语句找到了,但我没有看到关于如何演化构造函数签名的信息。我需要在不创建新表/类型和将数据迁移到新的更新类型的情况下执行此操作。就我而言,使用武力也不起作用 例如,给定下面的类型,我如何更新用户定义的构造函数签名以包含在初始化期间使用的新参数 -- Create new type CREATE OR REPLACE TY

如何发展用户定义的构造函数签名

给定一个具有表依赖项的Oracle PL/SQL用户定义类型,我需要改进这些类型,而不是用create/replace语句替换它们。我通过alter语句找到了,但我没有看到关于如何演化构造函数签名的信息。我需要在不创建新表/类型和将数据迁移到新的更新类型的情况下执行此操作。就我而言,使用武力也不起作用

例如,给定下面的类型,我如何更新用户定义的构造函数签名以包含在初始化期间使用的新参数

-- 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;
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;

事实证明,alter语句实际上就是上面所述和下面所示的语句。但是,您可能会遇到“太多与此调用匹配的'test_type'声明”。在我真正的问题中,问题是我所有的构造函数参数都有默认的空值,并且与我所有的原始构造函数都有默认的空参数相冲突。如果去掉默认的NULL,我可以添加新的构造函数