zoukankan      html  css  js  c++  java
  • PL/SQL 数组的使用

    一、固定数组

    1、在模式(schema)级创建VARRAY类型

    语法:

    CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) OF <element_type>

    其中,

    • varray_type_name是一个有效的属性名称;
    • nvarray中元素的数量(最大值);
    • element_type是数组元素的数据类型。

    可以使用ALTER TYPE语句更改变量的最大大小。

    实例:

    CREATE OR REPLACE TYPE namesarray IS VARRAY(3) OF VARCHAR2(10); 

    备注:在Oracle中,一个用户就是一个Schema,表都是建立在Schema中的,也可以理解为每个用户拥有不同的表。一个用户想访问另外一个用户,也就是另外一个schema的表的时候,可以用 username.tablename的形式来访问。

    2、在PL/SQL块中创建VARRAY类型

    语法:

    TYPE varray_type_name IS VARRAY(n) OF <element_type>

    实例:

    DECLARE 
       TYPE namesarray IS VARRAY(5) OF VARCHAR2(10); 
       TYPE gradesarray IS VARRAY(5) OF INTEGER; 
       names namesarray; 
       marks gradesarray; 
       total INTEGER; 
    BEGIN 
       names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz'); 
       marks := gradesarray(98, 97, 78, 87, 92); 
       total := names.count; 
       dbms_output.put_line('总共有 '|| total || ' 名学生'); 
       FOR i IN 1 .. total LOOP 
          dbms_output.put_line('姓名: ' || names(i) || ' 成绩: ' || marks(i)); 
       END LOOP; 
    END;
    
    结果:
    总共有 5 名学生
    姓名: Kavita 成绩: 98
    姓名: Pritam 成绩: 97
    姓名: Ayan 成绩: 78
    姓名: Rishav 成绩: 87
    姓名: Aziz 成绩: 92

    注意:

    • 在Oracle环境中,varrays的起始索引始终为1
    • 可以使用varray类型的构造方法初始化varray元素,该方法与varray具有相同的名称;
    • varrays是一维数组
    • varray在声明时自动为NULL,并且必须在引用元素之前初始化它。

    二、可变数组

    DECLARE 
      TYPE ORG_TABLE_TYPE IS TABLE OF VARCHAR2(25)
      INDEX BY BINARY_INTEGER;
      V_ORG_TABLE ORG_TABLE_TYPE;
    BEGIN
      V_ORG_TABLE(1) := '1';
      V_ORG_TABLE(2) := '2';
      V_ORG_TABLE(3) := '3';
      V_ORG_TABLE(4) := '4';
      V_ORG_TABLE(5) := '5';
      FOR i IN V_ORG_TABLE.first .. V_ORG_TABLE.last LOOP
        dbms_output.put_line(V_ORG_TABLE(i));
      END LOOP;
    END;
  • 相关阅读:
    大数计算问题
    句子逆序
    字符个数统计
    提取不重复的整数
    合并表记录
    浅谈之高级查询over(partition by)
    proc之建表添加数据报错解决
    浅谈之过滤条件【or】
    浅谈之索引失效
    浅谈之表连接方法
  • 原文地址:https://www.cnblogs.com/Jimc/p/9541900.html
Copyright © 2011-2022 走看看