`
黑鸟酱
  • 浏览: 127313 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Oracle 集合 方法

 
阅读更多
  1. The COUNT Method: 用于计算 associative array, nested table, or VARRAY 中元素的个数,使用 DELETE or TRIM  将减少 COUNT
    /*
     * COUNT method
     */
    declare
      type my_varray is varray(3) of varchar2(20);
      l_varray my_varray := my_varray();
    begin
      l_varray.extend(3);
      l_varray(1) := 'aaa';
      l_varray(2) := 'bbb';
      l_varray(3) := 'ccc';
      for var_index in 1..l_varray.count loop
        dbms_output.put_line(l_varray(var_index));
      end loop;
    end;
     
  2. The DELETE Method: DELETE 用于删除 collection 中的一个、多个或者全部元素
  3. The EXISTS Method: 判断 collection 中的指定行是否存在,如果以前存在,后来被 DELETE 了,那也返回 false
    /*
     * DELETE method and EXISTS method
     */
    declare
      type my_nestedTable is table of varchar2(20);
      l_nestedTable my_nestedTable := my_nestedTable();
      var_temp varchar2(20);
      index_num number;
    begin
      l_nestedTable.extend(3);
      l_nestedTable(1) := 'aaa';
      l_nestedTable(2) := 'bbb';
      l_nestedTable(3) := 'ccc';
      -- delete one item
      l_nestedTable.delete(2);
      index_num := l_nestedTable.first;
      for var_index in 1..l_nestedTable.count loop
        -- check the exists item
        if l_nestedTable.exists(index_num) then
          --l_nestedTable.exists(var_index)
           dbms_output.put_line(l_nestedTable(index_num));
        else
           dbms_output.put_line('delete item');
        end if;
        index_num := l_nestedTable.next(index_num);
      end loop;
    end;
  4. The EXTEND Method: 用于为 nested table or VARRAY 分配空间
          1.不加参数,分配一个 null element
          2.EXTEND(n),分配 n 个 null element
          3.EXTEND(n,i),分配 n 个和第 i 值相同的 element,这对于有 NOT NULL 限制的 element
  5. The FIRST and LAST Methods: 分别返回 COLLECTION 中可用的最低和最高下标,被 DELETE 的不会显示
    /*
     * EXTEND method, FIRST method and LAST method
     */
    declare
      type my_nestedTable is table of varchar2(20);
      type my_varray is varray(2) of varchar2(20);
      l_nestedTable  my_nestedTable := my_nestedTable();
      l_varray       my_varray := my_varray();
      begin
        -- init neseted table
        l_nestedTable.extend(2);
        l_nestedTable(1) := 'nestedTable1'; 
        l_nestedTable(2) := 'nestedTable2';
        -- init varray
        l_varray.extend(2);
        l_varray(1) := 'varray1';
        l_varray(2) := 'varray2';
        -- the last and first method
        for var_index in l_varray.first..l_varray.last loop
          dbms_output.put_line(l_varray(var_index)||'--'||l_nestedTable(var_index));
        end loop;
      end;
     
  6. The LIMIT Method: 返回 VARRAY 的最大数目限制,如果用于 nested tables or to associative arrays 将返回 NULL
  7. The PRIOR and NEXT Methods: 如果应用于初始化了但为空的 COLLECTION 时,返回 null;如果 i 大于等于 COUNT,则 NEXT 返回 null;如果 i 小于等于 FIRST,则 PRIOR 返回 null
    /*
     * LIMIT method, PRIOT method and NEXT method
     */
      declare
      type my_varray is varray(3) of varchar2(20);
      type my_table is table of varchar2(20) index by binary_integer;
      l_varray      my_varray := my_varray();
      l_table       my_table;
      begin
        l_varray.extend(2);
        l_varray(1) := 'varray1';
        l_varray(2) := 'varray2';
        -- limit method
        dbms_output.put_line(l_varray.limit||'--'||l_table.limit);       
        l_varray.extend(1);
        dbms_output.put_line(l_varray.limit);
        
        for var_index in l_varray.first..l_varray.last loop
          -- prior method and next method
          dbms_output.put_line(l_varray.prior(var_index)||'---'||l_varray.next(var_index));
        end loop;
      end;
     
  8. The TRIM Method: 由于删除 nested table or VARRAY 末尾的 n 行,如果不加参数,删除最后一行,如果用于 associative array 将产生编译时错误
    /*
     * TRIM method
     */
      declare
      type my_nestedTable is table of varchar2(20);
      l_nestedTable       my_nestedTable := my_nestedTable();
      begin
        -- init nested table
        l_nestedTable.extend(3);
        l_nestedTable(1) := 'nestedTable1';
        l_nestedTable(2) := 'nestedTable2';
        l_nestedTable(3) := 'nestedTable3';
        -- delete last two row
        l_nestedTable.trim(2);
        -- print
        for var_index in l_nestedTable.first..l_nestedTable.last loop
          dbms_output.put_line(l_nestedTable(var_index));
        end loop;
      end;
     
分享到:
评论

相关推荐

    Oracle PLSQL集合

    #### 12.3 集合方法 Oracle提供了多种用于操作集合的方法,包括过程和函数,用于检查和操作集合的内容。 **示例** ```sql -- 获取集合长度 t_nested_var.count; -- 合并两个嵌套表 t_nested_var := t_nested_var ...

    oracle sql集合

    ### Oracle SQL 集合知识点详解 #### 一、Oracle 安装完成后的初始口令 在Oracle数据库安装完成后,存在一系列预设的账号及其初始密码。这些账号对于数据库的安全性和管理至关重要。以下是一些常见账号及其初始口令...

    Oracle三种集合数据类型的比较

    Oracle数据库系统提供了多种数据类型,其中包括了三种主要的集合数据类型:VARRAY(变量数组)、NESTED TABLE(嵌套表)和 Associative Array(关联数组,也称为INDEX BY TABLE)。这三种集合数据类型在存储和操作一...

    Oracle的错误集合

    在Oracle数据库管理中,经常会遇到各种错误,本文主要讨论了三个常见的Oracle错误及其解决方案。...在日常运维中,定期备份、监控日志以及熟悉常见错误处理方法能够有效地减少故障发生并快速恢复服务。

    Oracle基本操作集合

    学Oracle的好东西,适合初学者,集合了大部分基本操作命令的实现

    oracle 数据库操作 集合

    oracle 创建表空间和用户; oracle job的创建及相关命令; oracle 触发器或存储过程中执行外部exe程序; oracle 导入导出; oracle 删除所有表的数据; sqlserver 读取excel

    oracle集合union、union all、intersect、minus

    Oracle 集合操作详解 Oracle 集合操作是指在数据库中对数据进行集合运算的操作,包括 union、union all、intersect 和 minus 等操作。这些操作可以对数据进行合并、交叉、差异等处理,提高数据处理效率。 union ...

    Oracle集合操作函数union、intersect、minus.docx

    Oracle 集合操作函数 union、intersect、minus Oracle 集合操作函数是用于合并多条 SELECT 语句的结果的函数,包括 UNION、INTERSECT、MINUS 等。这些函数可以将多个查询结果合并成一个结果集,以便进一步处理和...

    初学者必备oracle 1000个常用命令_oracle 命令大全_oracle命令集合

    oracle 常用命令_oracle 命令大全_oracle命令集合_oracle基本命令 非常方便,带查询功能,能很方便的查询你要找的oracle命令写法

    ORCL数据库相关文档.rar_ORCL数据集合_Oracle命令集合_busy7dm_globewxf_oracle

    在"ORCL数据库相关文档.rar"这个压缩包中,我们可以找到一系列关于Oracle数据库的重要资料,尤其是"Oracle命令集合"部分,它涵盖了Oracle数据库管理和操作的各种常见命令。 首先,创建实例是Oracle数据库管理的基础...

    Oracle集合运算.pdf

    本资源涵盖知识(包括使用案例):Oracle集合运算,交集、并集、补集、差集. 集合运算就是将多个结果集组合成一个结果集。

    oracle日常巡检命令集合

    "oracle日常巡检命令集合" Oracle日常巡检命令集合是数据库管理员最重要的工具之一,通过这些命令,可以检查数据库的状态、性能和安全性。以下是oracle日常巡检命令集合的详细说明: 检查数据库基本状况 1.1. ...

    Java调用oracle函数返回oracle类(类似)集合

    在Java中调用Oracle函数并处理返回的Oracle特定数据类型,如集合或索引表,通常涉及到Oracle的PL/SQL包和Java的JDBC驱动。以下是对这个主题的详细说明: 1. **Oracle索引表类型**: Oracle索引表是一种PL/SQL数据...

    Oracle资料大全(集合)

    Oracle资料大全集合是一个涵盖Oracle数据库系统方方面面的综合资源包,对于学习、研究或者工作中需要处理Oracle相关问题的人员来说,是一份极其宝贵的参考资料。Oracle,作为全球广泛使用的大型关系型数据库管理系统...

    Oracle资料大集合.zip_oracle_windows oracle

    Oracle资料大集合.zip_oracle_windows oracle 这个压缩包文件主要涵盖了与Oracle数据库系统相关的资源,特别是针对Windows操作系统的使用。Oracle是全球广泛使用的大型关系型数据库管理系统,它提供了复杂的数据存储...

    oracleasm软件包大集合

    标题"oracleasm软件包大集合"指的是这个压缩包中包含了用于安装和配置Oracle ASM的各种软件包,适用于不同的Red Hat Linux版本。在部署Oracle 11g RAC时,这些软件包将确保ASM功能在集群环境中正常工作,支持多个...

    php连接oracle数据库的方法(测试成功)

    ORA函数是较早的函数集合,而OCI函数是Oracle的Call Interface,它提供了更新、更全面的函数来执行Oracle数据库的连接和操作。虽然两者使用语法类似,但推荐使用OCI函数集,因为它不仅支持更广泛的Oracle数据库版本...

    Oracle.ManagedDataAccess连接Oracle所需dll集合

    压缩包中包含:Oracle.ManagedDataAccess.EntityFramework.dll ,Oracle.ManagedDataAccess.dll和 Oracle.ManagedDataAccess.DTC.dll(64位和32位)

    linux安装oracle文档集合

    linux安装oracle文档集合 包含linux中安装oralce文档 linux基本操作 linux基础宝典 需要的rpm包 创建虚拟机等等文档

    oracle 高级教程-深入学习集合

    oracle 高级教程-深入学习集合 oracle 高级教程-深入学习集合

Global site tag (gtag.js) - Google Analytics