`
123003473
  • 浏览: 1061458 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

pl/sql 集合代码 的遍历方式

 
阅读更多
-- Created on 2011-10-12 by HUCHANGKUN 
declare 
  -- Local variables here
  i integer;
  V_LIST RECORDLIST := RECORDLIST();
  
  
  TYPE RECORD_OBJ IS RECORD(
       ID INTEGER,
       NAME LONG
  );
  
  V RECORD_OBJ;
/*不加的话就要变成:
declare
type tabletype1 is table of varchar2(9);
  table1 tabletype1=tabletype1();
begin   
  tabletype1.extend;
  table1(1):='成都市';
  tabletype1.extend;
  table1(2):='北京市';
end;
也就是说,加了index by binary_integer;tabletype1 类型的下标就是自增长的,tabletype1 类型在插入元素时,不需要初始化,不需要每次extend增加一个空间。


这个不是数组,是哈希
可以理解为一张表,只有两个字段 KEY,VALUE
KEY是主键,是唯一的,KEY的数据类型就是 INDEX BY XXX
*/
  --嵌套表 、 索引表、变长数组
  TYPE RECORD_OBJ_LIST IS TABLE OF RECORD_OBJ; --index by binary_integer;
  V_RECORD_OBJ_LIST RECORD_OBJ_LIST := RECORD_OBJ_LIST();
  --V_RECORD_OBJ_LIST RECORD_OBJ_LIST ;
  TYPE RECORD_ARRAY IS VARRAY(10) OF RECORD_OBJ;
  V_ARRAY RECORD_ARRAY := RECORD_ARRAY();
begin
  -- Test statements here
  FOR I IN 1 .. 10 LOOP
      V_LIST.EXTEND;
      V_LIST(I) := ITEMRECORD(I,I||'NAME');
      
      V_ARRAY.EXTEND;
      V.ID := I;
      V.NAME := 'NAME'||I;
      V_ARRAY(I) := V;
  END LOOP;
  
  FOR I IN 1 .. V_LIST.COUNT LOOP
      DBMS_OUTPUT.put_line('ID: '|| V_LIST(I).ID || ' NAME:' || V_LIST(I).NAME);
  END LOOP;
  
  FOR I IN 1 .. 20 LOOP
      V_RECORD_OBJ_LIST.EXTEND;
      V.ID := I;
      V.NAME := 'NAME'||I;
      V_RECORD_OBJ_LIST(I) := V;
  END LOOP;
  
  V_RECORD_OBJ_LIST.delete(3);
  
  FOR I IN V_RECORD_OBJ_LIST.FIRST .. V_RECORD_OBJ_LIST.LAST LOOP
      --if V_RECORD_OBJ_LIST(3) is null then
       --  dbms_output.put_line();
      --else 
      IF I<>3 THEN  
         DBMS_OUTPUT.put_line('ID:'||V_RECORD_OBJ_LIST(I).ID || ' NAME:'||V_RECORD_OBJ_LIST(I).NAME);   
      end if;
  END LOOP;
  
  DBMS_OUTPUT.put_line(V_RECORD_OBJ_LIST.COUNT);
  i:=V_RECORD_OBJ_LIST.FIRST;
  WHILE I IS NOT NULL
  LOOP
        DBMS_OUTPUT.put_line(V_RECORD_OBJ_LIST(I).ID);
        I := V_RECORD_OBJ_LIST.NEXT(I);
  END LOOP;
  DBMS_OUTPUT.put_line('-----------------');
  
  --对于可变数组来说是不可以删除
  --i:=V_ARRAY.TRIM;
  DBMS_OUTPUT.put_line('删除之前的数组长度'||V_ARRAY.COUNT);
  V_ARRAY.TRIM;
 DBMS_OUTPUT.put_line('删除之前的数组长度'||V_ARRAY.COUNT);
  i:=V_ARRAY.FIRST;
  LOOP 
   EXIT WHEN I IS NULL;
   DBMS_OUTPUT.put_line(V_ARRAY(I).ID);
   I:= V_ARRAY.NEXT(I);
  END LOOP;
  
  EXCEPTION 
            WHEN OTHERS THEN
            DBMS_OUTPUT.put_line(SQLCODE||'_'||SQLERRM);
end;
分享到:
评论

相关推荐

    oracle pl/sql从入门到精通 配套源代码

    这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了帮助读者通过实践来深入理解和掌握Oracle数据库的编程技术。 首先,让我们探讨Oracle PL/SQL的基础知识。PL/SQL是Oracle数据库的内置编程语言,由块构成...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    5. **集合类型**:包括数组(PLS_INTEGER索引的PL/SQL表)和关联数组(索引由非数字类型的值定义),以及如何在集合中插入、删除和迭代元素。 6. **包(PACKAGE)**:创建和使用包来组织相关的过程和函数,实现模块...

    PL/SQL入门到精通书的源代码

    9. **包(Package)**:包是一种组织PL/SQL对象(如过程、函数、变量)的方式,可以提高代码的封装性和可维护性。 10. **记录类型(Record Types)**:自定义记录类型允许你创建类似于数据库表结构的变量,这对于...

    Oracle PL/SQL程序设计(第5版)(上下册)

    - **集合与记录**:学习如何使用PL/SQL中的集合和记录类型,这些结构可以帮助更高效地处理数据集。 - **游标**:介绍游标的使用方法,包括隐式游标和显式游标,以及如何利用游标遍历查询结果。 #### 四、PL/SQL中的...

    ORACLE PL/SQL从入门到精通

    PL/SQL软件包是一组相关的过程和函数的集合,它可以用来组织和管理程序。软件包由两部分组成,说明部分和包体部分,分别用于声明公共接口和实现逻辑。 异常处理在PL/SQL中用来处理程序运行时发生的错误。PL/SQL预定...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    《Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发》是一本深入探讨Oracle数据库中的PL/SQL编程的专业书籍。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库...

    oracle pl/sql fundamentals

    通过这个Oracle PL/SQL Fundamentals教程,学员将具备编写和调试高效、可靠PL/SQL代码的能力,从而更好地管理和维护Oracle数据库系统。这个培训不仅适合初学者,也对有经验的数据库管理员和开发者具有很高的参考价值...

    PL/SQL学习笔记

    PL/SQL是Oracle公司开发的一种过程化SQL扩展,它是Oracle数据库的重要组成部分,用于在数据库服务器上编写存储过程、函数、触发器、包等可执行代码。PL/SQL可以处理复杂的数据操作和业务逻辑,支持编程结构如循环、...

    ORALCE PL/SQL程序设计第五版

    3. **游标**:游标是PL/SQL中处理单行记录的重要工具,可以用于逐行遍历查询结果集。通过声明游标、打开、提取数据和关闭游标,你可以动态地处理查询结果。 4. **集合和记录类型**:PL/SQL支持集合类型,如数组和...

    PL/SQL语言的简介

    例如,你可以用IF语句来根据特定条件执行不同的代码段,而FOR循环则适用于遍历集合或数组。PL/SQL还提供了GOTO语句,尽管不推荐使用,因为它可能导致难以理解和维护的代码。 **异常处理**是PL/SQL的一个强大特性。...

    PL/SQL语法帮助

    - **记录和集合**:用于存储多条数据,可以是自定义类型的记录或标准的PL/SQL集合类型。 - **包**:封装相关的过程、函数和变量,提供模块化的代码组织。 学习PL/SQL不仅有助于你更好地管理Oracle数据库,还能提升...

    Oracle8i PL SQL 高级程序设计.zip 高清下载

    6. **集合与记录类型**:PL/SQL支持集合(如VARRAYs和associative arrays)和记录类型,允许自定义复杂的数据结构。06.pdf可能探讨了这些高级数据结构的创建和操作。 7. **包(Packages)**:包是将相关的变量、...

    PL/SQL基础

    PL/SQL还提供了子程序(PROCEDURE和FUNCTION)的概念,可以封装可重用的代码。函数返回值,而过程不返回值。创建一个函数可能如下: ```sql CREATE OR REPLACE FUNCTION get_sum(a IN NUMBER, b IN NUMBER) RETURN ...

    pl/sql集合相关例子

    ### PL/SQL 集合相关知识点详解 #### 一、概述 在PL/SQL中,集合(Collections)是一类非常重要的数据结构,用于存储多个相同类型的数据元素。这些元素可以是基本数据类型如`NUMBER`、`VARCHAR2`等,也可以是复杂...

    pl/sql开发

    2.2 **PL/SQL集合** 集合是一组相同类型的元素,分为索引数组和关联数组。索引数组通过数字索引访问,关联数组则通过键值对访问,如VARRAY(固定大小数组)和TABLE(动态大小数组)。 ### 3. PL/SQL中的SQL 3.1 *...

    oracle PL/SQL测试题目和详细答案

    ### Oracle PL/SQL测试题目与知识点解析 #### 一、选择题知识点解析 **1. Oracle数据库中为新创建的表分配的初始空间通常为多大?** - **知识点解析:** Oracle数据库为新创建的表分配的空间单位是“区”(Extent...

    PL-SQL.rar_pl_pl/sql

    学习PL/SQL不仅需要理解这些基本概念,还需要通过实践来熟悉其语法和使用方式。这个压缩包提供的资源可能涵盖了这些基础内容,并通过实例和练习帮助初学者快速上手。在深入学习PL/SQL的同时,还需要对Oracle数据库的...

    pl_sql.zip_fetch_pl/sql_pl_sql_plsql_plsql java

    `for_loop1.sql`和`while_loop2.sql`很可能是关于如何在PL/SQL中实现循环逻辑的实例,可能包括遍历集合、执行多次计算或其他迭代任务。 `PLSQL__JAVA`标签暗示了PL/SQL与Java的集成。Oracle数据库提供了Java存根...

    Oracle PL SQL 程序设计 下 第五版

    - Bulk Collect允许高效地将数据库结果集批量收集到PL/SQL集合中,提高性能。 12. **与SQL的交互** - PL/SQL可以直接执行DML(INSERT、UPDATE、DELETE)和DDL(CREATE、ALTER、DROP)语句,也可以使用动态SQL执行...

Global site tag (gtag.js) - Google Analytics