plsql陣列學習
TYPE nested_type IS TABLE OF VARCHAR2 ( 30 ) [not null];
-- 值為 varchar2 的陣列,下標為預設 int ;
TYPE Calendar IS VARRAY ( 366 ) OF NUMBER ;
--366 個 number 陣列,下標 1-366( 不是 0-365)
TYPE population_type IS TABLE OF NUMBER
INDEX BY VARCHAR2 ( 64 );
-- 下標是 varchar2 ,值是 number 的陣列
DECLARE
TYPE wordlist IS TABLE OF VARCHAR2 ( 5 );
words wordlist;
BEGIN
words( 1 ) := 10 ; --COLLECTION_IS_NULL, 未賦空間
words := wordlist( 10 , 20 , 30 ); -- 進行賦值
words( 1 ) := 'yes' ; -- 正確
words( 2 ) := words( 1 ) || 'no' ; -- 正確
words( 3 ) := 'longer than 5 characters' ; --VALUE_ERROR ,字元過長
words( 'B' ) := 'dunno' ; --VALUE_ERROR ,下標錯誤
words( 4 ) := 'maybe' ; --SUBSCRIPT_BEYOND_COUNT ,下標超限
END ;
IF courses.EXISTS(i) THEN
courses(i) := new_course;
END IF ;
FOR i IN 1 .. courses.COUNT LOOP ...
注意:COUNT會忽略已經被刪除的元素
IF (projects.COUNT + 15 ) < projects.LIMIT THEN ...
FOR i IN courses.FIRST .. courses.LAST LOOP ...
n := courses.PRIOR(courses.FIRST); --assigns NULL to n
courses.EXTEND( m , n ); --將第n個元素的值複製m份加到集合末端
courses.TRIM( 3 ); -- 與 extend 相反
courses.DELETE -- 刪除全部
courses.DELETE( 2 ) -- 刪除第 2 個元素
courses.DELETE( 2 , 5 ) -- 刪除第 2 到第 5 個元素
COLLECTION_IS_NULL --- 呼叫一個空集合的方法 , 集合未被初始化
NO_DATA_FOUND --- 下標索引指向一個被刪除的元素,或是關聯陣列中不存在的元素
SUBSCRIPT_BEYOND_COUNT --- 下標索引值超過集合中的元素個數
SUBSCRIPT_OUTSIDE_LIMIT --- 下標索引超過允許範圍之外
VALUE_ERROR --- 下標索引值為空,或是不是指定的下標型別
FORALL i IN pnums.FIRST .. pnums.LAST
INSERT INTO partno VALUES (pnums(i)); ---注意:不用再Loop了
IF SQL % BULK_ROWCOUNT ( 3 ) = 0 THEN ...
注意%BULK_ROWCOUNT的值是可以大於1的,比如批次插入等
DECLARE
TYPE numlist IS TABLE OF NUMBER ;
num_tab numlist := numlist( 10 , 0 , 11 , 12 , 30 , 0 , 20 , 199 , 2 , 0 , 9 , 1 );
ERRORS NUMBER ;
dml_errors EXCEPTION ;
PRAGMA EXCEPTION_INIT (dml_errors, - 24381 );
BEGIN
FORALL i IN num_tab.FIRST .. num_tab.LAST SAVE EXCEPTIONS
DELETE FROM emp
WHERE sal > 500000 / num_tab(i);
EXCEPTION
WHEN dml_errors THEN
ERRORS := SQL %BULK_EXCEPTIONS.COUNT;
DBMS_OUTPUT.put_line( 'Number of errors is ' || ERRORS );
FOR i IN 1 .. ERRORS LOOP
DBMS_OUTPUT.put_line( 'Error '
|| i
|| ' occurred during '
|| 'iteration '
|| SQL % BULK_EXCEPTIONS (i).ERROR_INDEX);
DBMS_OUTPUT.put_line( 'Oracle error is '
|| SQLERRM (- SQL % BULK_EXCEPTIONS (i).ERROR_CODE));
END LOOP ;
END ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1100992/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- plsql 陣列的用法SQL陣列
- 陣列學習陣列
- 陣列的學習陣列
- 學習JSON陣列JSON陣列
- PHP學習3——陣列PHP陣列
- Java學習之陣列Java陣列
- c# 陣列學習C#陣列
- Java學習之陣列練習Java陣列
- 【Numpy學習08】陣列迭代陣列
- JS陣列學習筆記JS陣列筆記
- gcc 0長陣列學習GC陣列
- C#學習 陣列(22)C#陣列
- PHP陣列學習之計算陣列元素總和PHP陣列
- Java 學習筆記 二維陣列和物件陣列Java筆記陣列物件
- PHP 學習總結之陣列PHP陣列
- 學習筆記——陣列方法整理筆記陣列
- JavaScript學習四(object物件,陣列,)JavaScriptObject物件陣列
- NumPy 學習(2): 陣列的操作陣列
- Java學習筆記之陣列Java筆記陣列
- 學習筆記----樹狀陣列筆記陣列
- swift 學習筆記之陣列Swift筆記陣列
- 學習筆記----字尾陣列筆記陣列
- 字尾陣列 學習筆記陣列筆記
- 字尾陣列學習筆記陣列筆記
- 陣列更加深入的學習陣列
- Java學習筆記——陣列練習(七)Java筆記陣列
- Oracle陣列使用以及PLSQL操作記錄Oracle陣列SQL
- PLSQL學習-【9包】SQL
- Golang 學習——陣列指標和指標陣列的區別Golang陣列指標
- JavaScript 學習筆記 - 多維陣列變為一維陣列JavaScript筆記陣列
- linux shell陣列深入學習理解Linux陣列
- go語言學習-陣列-切片-mapGo陣列
- 【C#學習筆記】陣列使用C#筆記陣列
- javaScript學習基礎篇(1)(陣列)JavaScript陣列
- 深入學習golang(1)—陣列與切片Golang陣列
- 演算法學習-零子陣列,最大連續子陣列演算法陣列
- 陣列、連結串列、堆疊和佇列學習陣列佇列
- PLSQL學習——控制語句SQL