2006年09月27日
SQL/PL 筆記(新手級)
sql/pl的心得分享
剛寫pl,找了不少資料,看來並沒有select出來的table資料直接轉成一個array的函數
所以只好自已寫了
剛寫pl,找了不少資料,看來並沒有select出來的table資料直接轉成一個array的函數
所以只好自已寫了
| set serveroutput on; (如沒有打開的話,DBMS_OUTPUT.PUT_LINE 將不會出現在畫面上) declare (宣告變數開頭的地方) db_total number; (宣告一個記錄有多少array的記數器) TYPE db_type IS RECORD (宣告一個object的內容為何,是array裏的欄位) (t_table varchar2(65), t_sum number(38)); TYPE db_type_array IS TABLE OF (宣告一個array object的內容是怎樣的格式) db_type INDEX BY BINARY_INTEGER; db_logical_reads_array db_type_array; (我為了方便使用,再多宣告一個object是跟db_type_array相同) db_logical_reads_type db_type; (我為了方便使用,再多宣告一個object是跟db_type相同) begin (本文開始) db_total := 1; FOR x IN (select object_name t_object,sum(value) t_sum from t_db_log where statistic_name='logical reads' and to_char(t_time,'mm')='09' group by object_name order by sum(value) desc) LOOP db_logical_reads_type.t_table := x.t_object; db_logical_reads_type.t_sum := x.t_sum; db_logical_reads_array(db_total) := db_logical_reads_type; db_total := db_total+1; END LOOP; /* for x in select xxxxxx from xxxx loop xxxxxx loop 這是把select查出來的東西放入x的object中,"x"這個object名字可隨你取,但最好別取到oracle的保留字 我的處理羅輯 1、利用for loop的方法把select出來的資料存入x中 2、再分把所要的欄位一個一個取出來放入db_logical_reads_type中 3、然後把db_logical_reads_type放入db_logical_reads_array 的陣列中 4、設定一個陣列的計數器來加1 */ DBMS_OUTPUT.PUT_LINE(LPAD('table',10,' ')||LPAD('logical_reads_total',25,' ')||LPAD('table',10,' ')||LPAD('physical_reads_total',25,' ')||LPAD('table',10,' ')||LPAD('physical_writes_total',25,' ')) ; /* DBMS_OUTPUT.PUT_LINE :印出訊習 LPAD:就是最長多少個字,不足的位置補上指定的字元 || : oracle中二字串相加 */ FOR i IN 1..db_logical_reads_array.count LOOP DBMS_OUTPUT.PUT_LINE('i:'||i||':'||db_logical_reads_array(i).t_table||':'||db_logical_reads_array(i).t_sum); END LOOP; /* 驗證一下是否資料真的全進來了 db_logical_reads_array.count : count是算總共有多少筆 */ end; (本文結束) / |
附記一些有用的參數
| set pagesize 0;每頁的行數,預設為24,如不要分頁的話就直接設0 set linesize 80;每行的字數長度 set numwidth 38;欄位為number 要顯示的長度為何,最大為38 spool text.out 把sql出來的結果輸出到檔案中 spool off 關畢把sql出來的結果輸出到檔案中的功能關畢 |
參考網址
http://www.linuxmine.com/2429.html
http://www.xker.com/Html/sjk/Oracle/2006_03_08_09_735.html
http://zhouwf0726.itpub.net/post/9689/189020
http://database.51cto.com/art/200512/15914.htm
如有人知道有較好的方法把table裏的資料轉成array的話,也請指點小弟一下
謝謝了
引用URL
http://cgi.blog.roodo.com/trackback/2201572