首页 > PL/SQL挑战 > 关联数组:索引值为负值(挑战题编号000001)

关联数组:索引值为负值(挑战题编号000001)

2015年4月2日 发表评论 阅读评论

问题:哪个选项创建的包使下面的代码执行完后显示"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;

/

选项1

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;

/

选项2

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;

/

选项3

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;

/

选项4

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;

/

答案:http://www.anguora.com/plsql挑战答案/

分类: PL/SQL挑战 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.