zoukankan      html  css  js  c++  java
  • FORALL Support for NonConsecutive Indexes (Sparse Collections)

    Oracle 10g introduces support for the FORALL syntax with non-consecutive indexes in collections. The INDICES OFclause allows the FORALL syntax to be used with sparse collections, while the VALUE OF clause is used for collections of indexes pointing to other collections. The following are examples of their usage.

    /* Formatted on 06/24/2011 4:56:22 PM (QP5 v5.163.1008.3004) */
    DROP TABLE tab1;

    CREATE TABLE tab1
    AS
       SELECT   1 id
         FROM   DUAL
        WHERE   1 = 0;

    DECLARE
       TYPE t_tab1 IS TABLE OF tab1%ROWTYPE;

       TYPE t_tab2 IS TABLE OF BINARY_INTEGER;

       l_tab1   t_tab1 := t_tab1 ();
       l_tab2   t_tab2 := t_tab2 ();
    BEGIN
       FOR i IN 1 .. 1000
       LOOP
          l_tab1.EXTEND;
          l_tab1 (l_tab1.LAST).id := i;

          IF MOD (i, 100) = 0
          THEN
             l_tab2.EXTEND;
             l_tab2 (l_tab2.LAST) := i;
          END IF;
       END LOOP;

       l_tab1.delete (301);
       l_tab1.delete (601);
       l_tab1.delete (901);

       -- This would fail due to sparse collection.
       --FORALL i IN l_tab.first .. l_tab.last
       --  INSERT INTO tab1 VALUES l_tab(i);

       -- This works fine with sparse collections.
       FORALL i IN INDICES OF l_tab1
          INSERT INTO   tab1
               VALUES   l_tab1 (i);

       -- This works fine for collections of indexes
       -- pointing to elements of another collection.
       FORALL i IN VALUES OF l_tab2
          INSERT INTO   tab1
               VALUES   l_tab1 (i);
    END;
    /

  • 相关阅读:
    推荐系统(Recommender System)
    Mac OS X安装OpenGL
    KMeans实现
    Principal Component Analysis(PCA)
    ReactiveX 学习笔记(15)使用 Rx.NET + Json.NET 调用 REST API
    ReactiveX 学习笔记(14)使用 RxJava2 + Retrofit2 调用 REST API
    Haskell语言学习笔记(91)Comprehension Extensions
    Go语言学习笔记(2)
    Go语言学习笔记(1)
    Rust语言学习笔记(6)
  • 原文地址:https://www.cnblogs.com/tracy/p/2089170.html
Copyright © 2011-2022 走看看