鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 管理员笔记 > 数据库 > >

PL/SQL Challenge 每日一题:2015-1-9 使用负数索引的关联数组

来源:互联网 作者:佚名 时间:2015-01-14 13:06
最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。 以往旧题索引: http://www.itpub.net/forum.php?m ... eidtypeid=1808 原始出处: http://www.plsqlchallenge
最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
 
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
 
原始出处:
http://www.plsqlchallenge.com/
 
作者:Steven Feuerstein 
 
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品 
 
哪些选项创建了一个包,使得下列代码块执行之后会显示 "Count=5" ?
 
CREATE OR REPLACE PROCEDURE plch_mark_for_deletion (
   list_io   IN OUT NOCOPY plch_pkg.list_t)
IS
BEGIN
   FOR indx IN 1 .. list_io.COUNT
   LOOP
      IF MOD (indx, 2) = 0
      THEN
         list_io (-1 * indx) := list_io (indx);
         list_io.delete (indx);
      END IF;
   END LOOP;
END;
/
 
DECLARE
   l_list   plch_pkg.list_t := plch_pkg.initialize ();
BEGIN
   plch_mark_for_deletion (l_list);
   
   FOR indx IN l_list.FIRST .. -1
   LOOP
      l_list.delete (indx);
   END LOOP;
 
   DBMS_OUTPUT.put_line ('Count = ' || l_list.COUNT);
END;
/
 
注意:所有选项的包体都是一样的。
 
 
(A)
CREATE OR REPLACE PACKAGE plch_pkg
IS
   TYPE list_t IS TABLE OF INTEGER
      INDEX BY PLS_INTEGER;
 
   FUNCTION initialize
      RETURN list_t;
END;
/
 
CREATE OR REPLACE PACKAGE BODY plch_pkg
IS
   FUNCTION initialize
      RETURN list_t
   IS
      l_list   list_t;
   BEGIN
          SELECT LEVEL
            BULK COLLECT INTO l_list
            FROM DUAL
      CONNECT BY LEVEL < 10;
 
      RETURN l_list;
   END;
END;
/
 
(B)
CREATE OR REPLACE PACKAGE plch_pkg
IS
   TYPE list_t IS TABLE OF INTEGER;
 
   FUNCTION initialize RETURN list_t;
END;
/
 
CREATE OR REPLACE PACKAGE BODY plch_pkg
IS
   FUNCTION initialize
      RETURN list_t
   IS
      l_list   list_t;
   BEGIN
          SELECT LEVEL
            BULK COLLECT INTO l_list
            FROM DUAL
      CONNECT BY LEVEL < 10;
 
      RETURN l_list;
   END;
END;
/
 
 
 
(C)
CREATE OR REPLACE PACKAGE plch_pkg
IS
   TYPE list_t IS VARRAY(10) OF INTEGER;
 
   FUNCTION initialize RETURN list_t;
END;
/
 
CREATE OR REPLACE PACKAGE BODY plch_pkg
IS
   FUNCTION initialize
      RETURN list_t
   IS
      l_list   list_t;
   BEGIN
          SELECT LEVEL
            BULK COLLECT INTO l_list
            FROM DUAL
      CONNECT BY LEVEL < 10;
 
      RETURN l_list;
   END;
END;
/
 
(D)
CREATE OR REPLACE PACKAGE plch_pkg
IS
   TYPE list_t IS TABLE OF VARCHAR2(100)
      INDEX BY VARCHAR2(100);
 
   FUNCTION initialize
      RETURN list_t;
END;
/
 
CREATE OR REPLACE PACKAGE BODY plch_pkg
IS
   FUNCTION initialize
      RETURN list_t
   IS
      l_list   list_t;
   BEGIN
          SELECT LEVEL
            BULK COLLECT INTO l_list
            FROM DUAL
      CONNECT BY LEVEL < 10;
 
      RETURN l_list;
   END;
END;
/
 
网友评论
<