zoukankan      html  css  js  c++  java
  • 可变数组(PLSQL)

    可变数组

    可变数组与嵌套表相似,也是一种集合。一个可变数组是对象的一个集合,其中每个对象都具有相同的数据类型。可变数组的大小由创建时决定。在表中建立可变数组后,可变数组在主表中作为一个列对待。从概念上讲,可变数组是一个限制了操作个数的嵌套表。

    可变数组,允许用户在表中存储重复的属性。例如:在嵌套表时使用过的部门表,一个项目可以有多个项目,用户使用可变数组这一类型可以在部门中设置多个项目的名字,如果限定每个部门的项目不超过3个,则可以建立一个10个数据项为限的可变数组。之后就可以处理此可变数组,可以查询每一个部门的所有项目信息

    可变数组--范例

    创建项目数组

    Create or replace type kingsql_varray as varray(3) of varchar2(50);

    定义部门表,使用可变数组

    Drop table department purge

    Create table department3(

    Did number,

    Deptname varchar(30) not null,

    Projects kingsql_varray);

    定义复合类型的可变数组

    创建一个表示项目类型的对象

    Create or replace type project_type as object(

    Projectid number,

    Projectname varchar(50),

    Projectfunds number,

    Pubdate date);

    定义新的数组类型

    CREATE OR REPLACE TYPE project_varray AS VARRAY(3) OF project_type ;

    定义数据表,使用可变数组

    DROP TABLE department PURGE ;

    CREATE TABLE department (

    did NUMBER ,

    deptname VARCHAR(50) NOT NULL ,

    projects project_varray ,

    CONSTRAINT pk_did PRIMARY KEY (did)

    ) ;

    Insert into department

    Values(1,’hehe’,project_varray(project_type(1,’hehe’,1,sysdate)));

    Insert into department

    Values(2,’haha’,project_varray(project_type(2,’haha’,2,sysdate),project_type(22,’haha’,22,sysdate),project_type(222,’haha’,222,sysdate)));

    Insert into department

    Values(3,’gaga’,project_varray(project_type(3,’gaga’,3,sysdate),project_type(33,’gaga’,33,sysdate),project_type(333,’gaga’,333,sysdate),project_type(3333,’gaga’,3333,sysdate)));

     

    会报错,超过可变数组最大值限制

    可变数组--范例

    PL/SQL中使用可变数组

    Declare

    Type project_varray is varray(3) of varchar(50);

    Projects project_varray:=project_varray(null,null,null);

    Begin

    Projects(1):=’OCP’;

    Projects(2):=’OCM’;

    Projects(3):=’MYSQL’;

    For x in projects.first .. projects.last loop

    Dbms_output.put_line(projects(x));

    End loop;

    End;

    /

  • 相关阅读:
    OpenStack 发行版本
    刷新linux硬盘存储接口
    LVM实践
    LVM man帮助
    ansible --help 文档
    nmcli connection modify eth1 ipv4.addr "192.168.31.23" ipv4.method manual
    自己动手使用, MetaWeblog 发布博客(cnblogs)
    测试图片上传 on Markdown editor
    大批量更新数据mysql批量更新的四种方法
    PHP print_r 转换/还原为数组
  • 原文地址:https://www.cnblogs.com/kawashibara/p/9090202.html
Copyright © 2011-2022 走看看