oracle中能不能实现存储“数组”?我想在一个字段中存储数组,可以增加可以减少,也就是说是一个可变的数组,oracle中好像没有这个数据类型,有没有实现的办法?

解决方案 »

  1.   

    pl/sql 里有边长数组varray。
    你看看相关的文档吧
      

  2.   


    我谷歌了一下,发现是看不懂的,网上说可以声明一个数组,但是声明之后这个数组就可以使用了吗?
    在创建一个表的时候,字段的类型有varchar2,number...那我声明一个字段,可以把它的数据类型声明成我刚刚定义的那个数组吗?
      

  3.   

    SQL> CREATE TYPE email_list_arr AS VARRAY(10) OF VARCHAR2(80);
      2  /
     
    Type created
     
    SQL> 
    SQL> create table t_type_test
      2  (id  number,
      3   name email_list_arr);
     
    Table created
     
    SQL> 
    SQL> insert into t_type_test
      2  values(1,email_list_arr('123','345'));
     
    1 row inserted
     
    SQL> commit;
     
    Commit complete
      

  4.   


    ---是否这个意思SQL> create or replace type type_obc as object( sex varchar2(2),addr varchar2(30))
      2  /类型已创建。SQL> create or replace type per_type as table of type_obc
      2  /类型已创建。SQL> create table person_rec(id number,name varchar2(10),qt per_type) 
      2  nested table qt store as qt_tb
      3  /表已创建。SQL> create table person_rec2( id number,name varchar2(10),qt TYPE_OBC)
      2  /表已创建。SQL> insert into person_rec2 values(1,'wkc168', TYPE_OBC('男','湖南'))
      2  /已创建 1 行。SQL> commit
      2  /提交完成。SQL> select * from person_rec2 
      2  /        ID NAME       QT(SEX, ADDR)
    ---------- ---------- --------------------------------------
             1 wkc168     TYPE_OBC('男', '湖南')
      

  5.   


    --补上SQL> select * from  person_rec
      2  /        ID NAME       QT(SEX, ADDR)
    ---------- ---------- --------------------------------------
             1 scott      PER_TYPE(TYPE_OBC('男', '湖南'))
      

  6.   

    oracle早就是ORDBMS了,CREATE TYPE hyarrayt AS VARRAY(1048576) OF NUMBER;
    /
    CREATE TYPE hytype AS OBJECT
    (
    hystr VARCHAR2(32),
    hynum NUMBER, 
    hyarray HYARRAYT 
    );
    /
    CREATE TABLE hytab
    (
    id NUMBER NOT NULL,
    val HYTYPE
    );
    /INSERT INTO hytab VALUES(1, HYTYPE(‘iihero’, 100, HYARRAYT(1,2,3,4,5,6)));
      

  7.   


    可是查询的时候   查询的是一个<Collection>,如何把里面的数据读出来?
      

  8.   

    定义一个email_list_arr变量,然后select into进去