2011-10-10 COLLECTION的EXISTS接受NULL参数的表现
更新:HHH   时间:2023-1-7


http://www.itpub.net/thread-1499223-2-1.html

15楼


我创建了这个“帮助”函数来显示布尔变量的值:

CREATE OR REPLACE PROCEDURE plch_show_boolean (val IN BOOLEAN)
IS
BEGIN
   DBMS_OUTPUT.put_line (
      CASE val
         WHEN TRUE THEN 'TRUE'
         WHEN FALSE THEN 'FALSE'
         ELSE 'NULL'
      END);
END plch_show_boolean;
/

下列哪些选项中,哪个块执行之后会显示"FALSE"?

(A)

DECLARE
   my_list   DBMS_SQL.number_table;
   l_index   PLS_INTEGER;
BEGIN
   plch_show_boolean (my_list.EXISTS (l_index));
END;
/
FALSE

(B)

DECLARE
   my_list   DBMS_SQL.number_table;
   l_index   PLS_INTEGER := 100;
BEGIN
   plch_show_boolean (my_list.EXISTS (l_index));
END;
/
FALSE

(C)

DECLARE
   my_list          DBMS_SQL.number_table;
   l_index          PLS_INTEGER := 100;
   element_exists   BOOLEAN;
BEGIN
   BEGIN
      l_index := my_list (l_index);
      element_exists := TRUE;
   EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         element_exists := FALSE;
   END;
   plch_show_boolean (element_exists);
END;
/
FALSE

(D)

DECLARE
   my_list   DBMS_SQL.number_table;
BEGIN
   plch_show_boolean (my_list.EXISTS (NULL));
END;
/
FALSE

  

答案ABCD


知识点后补

返回关系型数据库教程...