plsql_index by_table of_count_next_prior_last,first語法小測

wisdomone1發表於2010-08-15

--table of--index by 元素引用測試
set serveroutput on
declare
 type table_type is table of number index by binary_integer;
 table1 table_type;
begin
 table1(1):=1;
 table1(2):=2;
 table1(3):=3;
 dbms_output.put_line(table1(1));
 dbms_output.put_line(table1(2));
 dbms_output.put_line(table1(3));
end;
/
1
2
3

PL/SQL procedure successfully completed.

SQL>

 


--測試index by 且table of 型別之count,next,prior,first,last,exists用法


SQL> declare
  2   type table_type is table of number index by binary_integer;
  3   table1 table_type;
  4    begin
  5    table1(1):=1;--為第1個slot提供值1
  6     table1(4):=4;--為第2個slot提供值4
  7     dbms_output.put_line(table1.count);--count表示共佔用幾個slot,未分配指定值的slot不會計數   --
  8    for i in table1.first..table1.last loop  --用first及last表示第1個及最後1個slot對應的值
  9     if table1.exists(i) then  --用exists判斷對應slot是否分配指定了值,避免觸發異常no_data_found
 10     dbms_output.put_line(table1(i));
 11    else
 12    dbms_output.put_line('no data in slot '||i);--用else觸發異常
 13    end if;
 14     end loop;
 15    dbms_output.put_line(table1.prior(1));--prior表示上1個slot對應的值
 16     dbms_output.put_line(table1.next(0));--同上,下1個slot對應的值
 17    dbms_output.put_line(table1(4));
 18     dbms_output.put_line(table1.prior(5)); --delete 刪除slot對應的值並釋放記憶體
 19     dbms_output.put_line(table1.next(4));--返回的值為null
 20     end;
 21  /
2
1
no data in slot 2
no data in slot 3
4
1
4
4

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-671025/,如需轉載,請註明出處,否則將追究法律責任。

相關文章