【问题标题】:Record field doesn't have default value记录字段没有默认值
【发布时间】:2013-10-17 12:50:52
【问题描述】:

我有以下代码:

DECLARE
 TYPE rt_someDetails IS RECORD(
    deny_discount           VARCHAR2(4) DEFAULT 'NO');
 TYPE someDetails_va IS VARRAY(2) OF rt_someDetails;

 l_someDetails_va someDetails_va;
 l_rt_someDetails rt_someDetails;
BEGIN
 l_someDetails_va := someDetails_va();
 l_someDetails_va.EXTEND;

 -- when in varray, the default value doesn't show up
 dbms_output.put_line('From array:: ' || l_someDetails_va(1).deny_discount);

 -- However, when outside of varray, it works properly
 dbms_output.put_line('Directly from record var:: ' || l_rt_someDetails.deny_discount);
END;

为什么从 varray 中的记录读取时没有显示 deny_discount 的默认值?

【问题讨论】:

  • 扩展不会填充数组,它只是为将来的插入分配空间
  • 所以我应该创建一条记录,将其插入到可变数组中,然后尝试访问该字段。回答问题,以便我接受您的回答。

标签: oracle plsql record varray


【解决方案1】:

扩展不会按每个说填充数组,它只是为将来的插入分配空间(想想 NULL 元素)

尝试创建一条记录并插入到数组中。简单地扩展不会显示任何内容。

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 2018-03-19
    • 2014-11-09
    • 2015-07-07
    • 2019-11-22
    • 2018-07-29
    • 2018-07-09
    • 2018-07-14
    • 2020-05-29
    相关资源
    最近更新 更多