【问题标题】:Is it possible to define a record as the union of 2 records是否可以将记录定义为 2 条记录的并集
【发布时间】:2022-11-01 21:32:37
【问题描述】:
declare
     type a is record(a1 number, a2 varchar2(10));
     type b is record(b1 number, b2 varchar2(10));
     type c is record(a1 number, b2 varchar2(10),c1 number, c2 varchar2(10));
begin
    null;
end;

记录 c 是这样定义的:c 的字段是 a + b 的字段。

我有一个很多领域的真实例子。有没有更有效的方式来声明 c.

类似的东西?

 type c is record( a..., c...);

更重要的是,我希望如果我改变 a 或 b 的定义,c 的定义也会改变。 code on dbfiddle

【问题讨论】:

    标签: oracle


    【解决方案1】:
    %ROWTYPE only applies to tables.  Just do this:
    
    declare
         type a is record(a1 number, a2 varchar2(10));
         type b is record(b1 number, b2 varchar2(10));
         type c is record(a2 a, b2 b);
    begin
        null;
    end;
    

    是的,如果你改变 a 或 b,那么 c 就会改变

    【讨论】:

    • 这与 OP 尝试应用扩展运算符并不完全相同,因为 OP 试图获取具有属性 c.a1c.a2c.b1c.b2 的记录,但您的会给出嵌套属性 c.a2.a1c.a2.a2c.b2.b1c.b2.b2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 2016-10-02
    • 1970-01-01
    • 2021-04-14
    • 2014-10-12
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多