TYPEnested_typeISTABLEOFVARCHAR2 ( 30 ) [not null];
--值爲varchar2的數組,下標爲默認int ;
TYPECalendarISVARRAY(366 ) OFNUMBER;
--366個number數組,下標1-366( 不是 0-365)
TYPEpopulation_typeISTABLEOFNUMBER
INDEXBYVARCHAR2( 64 );
--下標是varchar2,值是number 的數組
DECLARE
TYPEwordlistISTABLEOFVARCHAR2 ( 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;
IFcourses.EXISTS(i)THEN
courses(i) := new_course;
ENDIF;
FORiIN1.. courses.COUNTLOOP...
注意:COUNT會忽略已經被刪除的元素
IF(projects.COUNT +15) < projects.LIMITTHEN...
FORiINcourses.FIRST .. courses.LASTLOOP...
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 ---下標索引值爲空,或是不是指定的下標類型
FORALLiINpnums.FIRST .. pnums.LAST
INSERTINTOpartnoVALUES(pnums(i)); ---注意:不用再Loop了
IFSQL%BULK_ROWCOUNT ( 3 ) = 0THEN...
表示如果第3次操作沒有對數據影響的行數爲0話……
注意%BULK_ROWCOUNT的值是可以大於1的,比如批量插入等
DECLARE
TYPEnumlistISTABLEOFNUMBER ;
num_tab numlist := numlist(10,0,11,12,30,0,20,199,2,0,9,1);
ERRORS NUMBER;
dml_errors EXCEPTION;
PRAGMAEXCEPTION_INIT(dml_errors, -24381 );
BEGIN
FORALLiINnum_tab.FIRST .. num_tab.LASTSAVEEXCEPTIONS
DELETEFROMemp
WHEREsal >500000/ num_tab(i);
EXCEPTION
WHENdml_errorsTHEN
ERRORS :=SQL%BULK_EXCEPTIONS.COUNT;
DBMS_OUTPUT.put_line('Number of errors is '|| ERRORS);
FORiIN1..ERRORSLOOP
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));
ENDLOOP;
END;