【问题标题】:Oracle, object table & nested tablesOracle、对象表和嵌套表
【发布时间】:2012-01-23 12:36:07
【问题描述】:

假设我有 2 个对象 MY_OBJ、MY_NESTED_TABLE_OBJ

CREATE OR REPLACE TYPE MY_NESTED_TABLE_OBJ IS TABLE OF VARCHAR2(100);

CREATE OR REPLACE TYPE MY_OBJ AS OBJECT (
    simple_atribute NUMBER(6),
    table_attribute MY_NESTED_TABLE_OBJ,
    MEMBER PROCEDURE doStuff(text VARCHAR2)
) NOT FINAL INSTANTIABLE;

MY_OBJ 的表

CREATE TABLE TBL_MY_OBJ OF MY_OBJ
(  CONSTRAINT PK_simple_atribute PRIMARY KEY(simple_atribute))
NESTED TABLE table_attribute STORE AS attribute_nst;

如何将 VARCHAR2(100) 插入到属于 table_attribute 的嵌套表中?什么是sintax??

执行简单的插入操作,例如:INSERT INTO attribute_nst VALUES ('some text'); 会出现错误

不能引用嵌套表列的存储表

我想要从 PROCEDURE doStuff(text VARCHAR2) 中插入,我试过了:

INSERT INTO SELF.attribute_nst VALUES (text);
INSERT INTO attribute_nst VALUES (text);
INSERT INTO table_attribute VALUES (text);

...和其他组合并没有什么,所以请帮忙!

【问题讨论】:

    标签: oracle nested-table


    【解决方案1】:
    SQL> CREATE OR REPLACE TYPE BODY MY_OBJ AS
      2    member procedure doStuff(text varchar2) is
      3    begin
      4      table_attribute.extend(1);
      5      table_attribute(table_attribute.count) := text;
      6    end;
      7  end;
      8  /
    
    Type body created.
    
    SQL> declare
      2     l_my_obj My_Obj := My_Obj(1,MY_NESTED_TABLE_OBJ());
      3  begin
      4    l_my_obj.doStuff('abc');
      5    l_my_obj.doStuff('def');
      6
      7    insert into tbl_my_obj values (l_my_obj);
      8  end;
      9  /
    
    PL/SQL procedure successfully completed.
    
    SQL> select * from tbl_my_obj;
    
    SIMPLE_ATRIBUTE
    ---------------
    TABLE_ATTRIBUTE
    ------------------------------------------------------------
                  1
    MY_NESTED_TABLE_OBJ('abc', 'def')
    

    【讨论】:

      【解决方案2】:

      试试这个
      插入 tbl_my_obj 值 (1, new my_nested_table_obj(text1, text2));

      【讨论】:

      • 我不想这样。我以面向对象的方式思考,我(X)是MY_OBJ的一个实例......我有一个方法(过程)doStuff(text VARCHAR2)......通过使用X.doStuff('a string') - > 'a string' 应该放在我的嵌套表中
      猜你喜欢
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多