2011-10-31 對集合的密集性判斷
http://www.itpub.net/thread-1499223-10-1.html
98 樓
我建立了這個工具函式來顯示一個布林型變數的值:
CREATE OR REPLACE PROCEDURE plch_bpl (val IN BOOLEAN) IS BEGIN DBMS_OUTPUT.put_line ( CASE val WHEN TRUE THEN 'TRUE' WHEN FALSE THEN 'FALSE' ELSE 'NULL' END); END plch_bpl; /
下列的選項中都包含了下面這個函式的實現程式碼:
CREATE OR REPLACE FUNCTION plch_is_dense (numbers_in IN DBMS_SQL.number_table) RETURN BOOLEAN
我寫了另一個幫助過程來測試這個 plch_is_dense 函式:
CREATE OR REPLACE PROCEDURE plch_test_is_dense IS l_numbers DBMS_SQL.number_table; BEGIN l_numbers (1000) := 1; l_numbers (3000) := 1; plch_bpl (plch_is_dense (l_numbers)); l_numbers.delete; l_numbers (2) := 1; l_numbers (3) := 1; plch_bpl (plch_is_dense (l_numbers)); END; /
哪些選項建立的plch_is_dense使得plch_test_is_dense在執行之後會顯示這兩行文字?
FALSE TRUE
(A)
IS BEGIN RETURN numbers_in.COUNT = (numbers_in.LAST - numbers_in.FIRST); END;
(B)
IS l_number NUMBER; BEGIN FOR indx IN numbers_in.FIRST .. numbers_in.LAST LOOP l_number := numbers_in (indx); END LOOP; RETURN TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN FALSE; END;
(C)
IS l_number NUMBER; BEGIN FOR indx IN 1 .. numbers_in.COUNT LOOP l_number := numbers_in (indx); END LOOP; RETURN TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN FALSE; END;
(D)
IS BEGIN RETURN numbers_in.COUNT = (numbers_in.LAST - numbers_in.FIRST + 1); END;
執行結果如下
(A)
CREATE OR REPLACE FUNCTION plch_is_dense(numbers_in IN DBMS_SQL.number_table) RETURN BOOLEAN IS BEGIN RETURN numbers_in.COUNT =(numbers_in.LAST - numbers_in.FIRST); END; /
SQL> exec plch_test_is_dense; FALSE FALSE PL/SQL procedure successfully completed SQL>
(B)
CREATE OR REPLACE FUNCTION plch_is_dense(numbers_in IN DBMS_SQL.number_table) RETURN BOOLEAN IS l_number NUMBER; BEGIN FOR indx IN numbers_in.FIRST .. numbers_in.LAST LOOP l_number := numbers_in(indx); END LOOP; RETURN TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN FALSE; END; /
SQL> exec plch_test_is_dense; FALSE TRUE PL/SQL procedure successfully completed SQL>
(C)
CREATE OR REPLACE FUNCTION plch_is_dense(numbers_in IN DBMS_SQL.number_table) RETURN BOOLEAN IS l_number NUMBER; BEGIN FOR indx IN 1 .. numbers_in.COUNT LOOP l_number := numbers_in(indx); END LOOP; RETURN TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN FALSE; END; /
SQL> exec plch_test_is_dense; FALSE FALSE PL/SQL procedure successfully completed SQL>
(D)
CREATE OR REPLACE FUNCTION plch_is_dense(numbers_in IN DBMS_SQL.number_table) RETURN BOOLEAN IS BEGIN RETURN numbers_in.COUNT =(numbers_in.LAST - numbers_in.FIRST + 1); END; /
SQL> exec plch_test_is_dense; FALSE TRUE PL/SQL procedure successfully completed SQL>
答案說明在101樓
10-31答案BD. 對於非密集型的COLLECTION訪問不能從1開始,而是要用FIRST方法。訪問不存在的元素會引發NO_DATA_FOUND異常。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/680385/viewspace-2659909/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 兩集合比較判斷
- CPU對指令長度的判斷
- jQuery中判斷input的disabled屬性jQuery
- PostgreSQL MVCC可見性判斷SQLMVC
- java判斷集合是否包含某個範圍內的值Java
- abc250E 判斷字首構成的集合是否相等
- MVCC - Read View的可見性判斷理解MVCView
- 判斷Map集合中是否存在某一個key
- MyBatis陣列與集合判斷非空和長度MyBatis陣列
- JS的判斷語句:判斷、迴圈JS
- javascript 判斷括號是否配對。JavaScript
- PAIRDISTILL: 用於密集檢索的成對相關性蒸餾方法AI
- [編譯原理]如何判斷某文法的二義性以及找到文法對應的語言編譯原理
- JS常用判斷空對像的幾種方法JS
- javascript中對變數型別的判斷方法JavaScript變數型別
- js函式中的if判斷和a==b判斷JS函式
- 使用帶型別判斷的比較判斷型別
- 【重溫基礎】18.相等性判斷
- JavaScript 判斷物件中是否有某屬性JavaScript物件
- 如何判斷股票有沒有主力?主力的判斷方法
- 質數的判斷
- 判斷NaN的真假NaN
- 怎麼判斷dns汙染,怎麼判斷dns汙染,具體判斷方法DNS
- 模擬微任務 判斷是否有對應的apiAPI
- .Net中字串不變性與相等判斷的特殊場景字串
- if 判斷使用
- 對一個連結串列判斷是否有環
- PostgreSQL DBA(25) - MVCC#5(Tuple可見性判斷)SQLMVCC#
- js判斷物件裡面是否有某個屬性JS物件
- document API之visibilitychange事件:判斷頁面可見性API事件
- js基礎-12-判斷陣列和判斷物件的方法JS陣列物件
- 移動端的判斷
- python if判斷的使用格式Python
- 判斷語句的使用
- java Script 的if判斷2Java
- 疫情下我對產業的判斷,不忘初心,砥礪前行產業
- Javascript判斷資料型別的五種方式及其特殊性JavaScript資料型別
- 動態生成表-判斷表是否存在效能對比