【问题标题】:Constructor for nested table with oracle带有oracle的嵌套表的构造函数
【发布时间】:2012-06-19 08:40:50
【问题描述】:

我想为以下 2 种类型创建一个构造函数。代码如下:

create or replace type toys_t as table of varchar2(40);

create or replace type kid_t as object (
      name varchar2(10), 
      toys toys_t,
      constructor function kid_t (name varchar2) return self as result);

create table kid of kid_t nested table toys store as table_toys;

有没有办法为嵌套表类型toys_t 创建用户定义的构造函数,还是只支持使用as object 语法创建的类型?

谢谢

鲍勃

【问题讨论】:

    标签: oracle constructor plsql user-defined-types nested-table


    【解决方案1】:

    toys_t 这样的集合自动有一个构造函数。只需使用集合的名称

    SQL> insert into kid values( 'Bobby', toys_t( 'Bike', 'Ball', 'Legos' ));
    
    1 row created.
    

    toys_t 构造函数可以采用 0、1 或多个参数。

    【讨论】:

    • 但是我们不能像我的例子中那样定义一个参数吗?谢谢
    • @Bob - toys_t 类型的隐式构造函数可以采用 0、1 或多个参数。我不确定通过定义自己的定义会获得什么好处。你能解释一下隐式构造函数不做的你想做的事情吗?
    【解决方案2】:

    不,我们不能为像 toys_t 表这样的类型声明用户定义的构造函数。集合类型(嵌套表或可变数组)只有默认构造函数。我们所能做的就是指定一个默认值,当我们实例化一个不带任何参数的集合时应用该默认值。 Find out more.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-11
      • 2012-12-25
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2023-04-03
      相关资源
      最近更新 更多