oracle集合型別的first、next、prior、last方法.TXT
昨天plsql challenge網站上的每日一題是關於goto語句、continue語句跳轉用法的。選錯了兩個。發現自己對於集合的屬性認識有點混淆,經常出錯。通過以下的實驗記錄一下:
首先建立一個儲存過程,用於產生oracle三種集合型別的資料
create or replace procedure plch_main
is
TYPE NESTED_T IS TABLE OF NUMBER;--巢狀表型別
TYPE ASSOCIATIVE_T IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; --索引表型別
TYPE VARRAYS_T IS VARRAY(10) OF NUMBER; --變長陣列型別
lst_nested nested_t:=nested_t(-2000,null,3500);
lst_associative associative_t;--索引表型別的集合不能直接賦值 可以從其特性來理解(可以是稀疏排列的)
lst_varrays varrays_t:=varrays_t(-2000,null,3500);
begin
lst_associative(1):=-2000;
lst_associative(3):=null;--注意,這裡沒有lst_associative陣列第二個元素
lst_associative(4):=3500;
dbms_output.put_line('以下為巢狀表的輸出內容:');
dbms_output.put_line('lst_nested(1) :'||lst_nested(1));
dbms_output.put_line('lst_nested(2) :'||lst_nested(2));
dbms_output.put_line('lst_nested(3) :'||lst_nested(3));
dbms_output.put('lst_nested.first-1:');
dbms_output.put_line(lst_nested.first-1);
dbms_output.put_line('lst_nested.first :'||lst_nested.first);
dbms_output.put_line('lst_nested.prior(1):'||lst_nested.prior(1));
dbms_output.put_line('lst_nested.next(1):'||lst_nested.next(1));
dbms_output.put_line('lst_nested.next(2):'||lst_nested.next(2));
dbms_output.put_line('lst_nested.next(3):'||lst_nested.next(3));
dbms_output.put_line('lst_nested.last :'||lst_nested.last);
dbms_output.put_line('以下為索引表的輸出內容:');
dbms_output.put_line('lst_associative(1) :'||lst_associative(1));
dbms_output.put_line('lst_associative(3) :'||lst_associative(3));
dbms_output.put_line('lst_associative(4) :'||lst_associative(4));
dbms_output.put('lst_associative.first-1:');
dbms_output.put_line(lst_associative.first-1);
dbms_output.put_line('lst_associative.first :'||lst_associative.first);
dbms_output.put_line('lst_associative.prior(1):'||lst_associative.prior(1));
dbms_output.put_line('lst_associative.next(1):'||lst_associative.next(1));
dbms_output.put_line('lst_associative.next(2):'||lst_associative.next(2));
dbms_output.put_line('lst_associative.next(4):'||lst_associative.next(4));
dbms_output.put_line('lst_associative.last :'||lst_associative.last);
dbms_output.put_line('以下為變長陣列的輸出內容:');
dbms_output.put_line('lst_varrays(1) :'||lst_varrays(1));
dbms_output.put_line('lst_varrays(2) :'||lst_varrays(2));
dbms_output.put_line('lst_varrays(3) :'||lst_varrays(3));
dbms_output.put('lst_varrays.first-1:');
dbms_output.put_line(lst_varrays.first-1);
dbms_output.put_line('lst_varrays.first :'||lst_varrays.first);
dbms_output.put_line('lst_varrays.prior(1):'||lst_varrays.prior(1));
dbms_output.put_line('lst_varrays.next(1):'||lst_varrays.next(1));
dbms_output.put_line('lst_varrays.next(2):'||lst_varrays.next(2));
dbms_output.put_line('lst_varrays.next(3):'||lst_varrays.next(3));
dbms_output.put_line('lst_varrays.last :'||lst_varrays.last);
end;
/
儲存過程編譯成功,以下呼叫並檢視結果。
特別注意三種陣列中第一個元素的prior方法、最後一個元素的next方法都是可以執行出來的;
並且索引表型別中未定義的元素序列也有prior、next方法。
SQL> exec plch_main;
以下為巢狀表的輸出內容:
lst_nested(1) :-2000
lst_nested(2) :
lst_nested(3) :3500
lst_nested.first-1:0
lst_nested.first :1
lst_nested.prior(1):
lst_nested.next(1):2
lst_nested.next(2):3
lst_nested.next(3):
lst_nested.last :3
以下為索引表的輸出內容:
lst_associative(1) :-2000
lst_associative(3) :
lst_associative(4) :3500
lst_associative.first-1:0
lst_associative.first :1
lst_associative.prior(1):
lst_associative.next(1):3
lst_associative.next(2):3
lst_associative.next(4):
lst_associative.last :4
以下為變長陣列的輸出內容:
lst_varrays(1) :-2000
lst_varrays(2) :
lst_varrays(3) :3500
lst_varrays.first-1:0
lst_varrays.first :1
lst_varrays.prior(1):
lst_varrays.next(1):2
lst_varrays.next(2):3
lst_varrays.next(3):
lst_varrays.last :3
PL/SQL procedure successfully completed
.first方法是陣列中第一個元素的下標值(序列值)
.prior(n)方法是陣列中第n個元素的前一個元素的下標值(序列值)
這個是容易搞錯的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-772241/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle集合的first, last , next ,count,existOracleAST
- plsql_index by_table of_count_next_prior_last,first語法小測SQLIndexAST
- oracle集合型別使用的實驗.TXTOracle型別
- OCP(11g)-----> oracle First In First Out (FIFO)/Last In First OutOracleAST
- Oracle分析函式-first_value()和last_value()Oracle函式AST
- 分析函式——NULLS FIRST/LAST函式NullAST
- Guava集合--新集合型別Guava型別
- Oracle三種集合資料型別的比較Oracle資料型別
- oracle集合型別的一些基本函式Oracle型別函式
- Redis的集合型別(Set)Redis型別
- List型別集合型別
- oracle 修改欄位型別的方法Oracle型別
- Scala 中的集合(一):集合型別與操作型別
- 泛型方法、初始集合和集合的遍歷泛型
- oracle樹中prior的用法Oracle
- [LeetCode] Find First and Last Position of Element in SortedLeetCodeAST
- 分析函式——keep(dense_rank first/last)函式AST
- [20150503]關於oracle的number型別.txtOracle型別
- Rust中將陣列轉為集合型別的簡單方法Rust陣列型別
- Swift之集合型別 (Collection Types)(集合篇)Swift型別
- Hive中的集合資料型別Hive資料型別
- python的資料型別(集合)Python資料型別
- 分析函式——FIRST_VALUE()和LAST_VALUE()函式AST
- Java集合型別詳解Java型別
- pl/sql集合型別(一)SQL型別
- python 集合型別 setPython型別
- ORACLE集合常用方法Oracle
- C# 泛型集合的自定義型別排序C#泛型型別排序
- 基礎-JAVA集合型別主要區別Java型別
- Leetcode 34 Find First and Last Position of Element in Sorted ArrayLeetCodeAST
- 【Redis實戰】有序集合型別Redis型別
- # Swift 集合型別之迭代器Swift型別
- redis有序集合型別sort setRedis型別
- Swift 整理(三)——字串、集合型別Swift字串型別
- C#集合型別大盤點C#型別
- Swift入坑系列—集合型別Swift型別
- MVC 繫結 集合型別 modelMVC型別
- pl/sql集合型別_varray(二)SQL型別