pl/sql developer將結果集輸出到excel

每個月的月初要給公司市場體系部門出一些月度統計報表,雖然用asp.net 2.0做了一個前端工具,操作也儘可能的簡化,在推廣使用中遇到2個問題:
 1、業務部門主觀上不太接收,以往都是用excel包裝好發到他們油箱,現在要改爲他們自己上網站上取,有個別同事不願意。
 2、月度統計的數據量比較大,查詢耗時過長(個別要5分鐘或10分鐘)。所以即使將這些查詢功能放到asp.net的網站上,也是無法使用,半天出不了結果(業務人員抱怨不絕入耳)。
注:這些查詢的輸出行數在1萬-2萬行左右,在asp.net中使用了rdlc報表工具(自帶分頁、導出到excel/pdf文件)。

鑑於這兩個問題無法在短期內解決,財務部門的月度統計報表仍舊由手工出。查詢統計功能已經全部封裝成存儲過程的代碼。在Oracle9i中,存儲過程返回結果集沒有在MSSQL那麼方便(直接發出select語句),它需要定義Ref Cursor,最後通過open v_curorname for select ...來打開引用遊標。

若是對普通select語句,在pl/sql developer中執行後,在結果集上右擊後選中“Copy to excel...”菜單即可。而對於返回結果集的存儲過程(非表函數Table Function),不能用普通select * from p_procname(...)調用來獲取結果集,所以比較麻煩。

後來發現,可以通過新建Test文件(*.tst),在pl/sql developer中執行後,打開多個結果集,並分別將結果集導出到excel中。在F8執行完後,在輸出參數的遊標後面,點擊標題爲"..."的按鈕,彈出新窗口即可取出結果集,再利用右擊後執行“Copy to excel...”菜單即可依次將結果輸出到excel文件中。

新建tst文件相對比較簡單,可以在打開package的代碼中,選中某個procedure或function,右擊選擇“test”菜單,即可生成一個模板,再稍作修改即可。增加若干個存儲過程調用,以及對應的參數聲明。這麼做的好處時能夠預定義輸出順序,對於有10來個worksheet的excel處理較好,預先定義好每個工作表的表頭和內容格式,保存成一個模板,再拷貝數據結果集。

目前的狀況下,這是能找到的最快的解決辦法。 

發佈了77 篇原創文章 · 獲贊 11 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章