PLSQL中 多個陳述句一起查詢得到多個查詢結果集,有何種辦法能夠批量匯出多個CSV檔案或者EXCEL;;
若圖片中查到的三個結果集,能否一次匯出。謝謝大神們解答
uj5u.com熱心網友回復:
應該沒辦法吧,不知道有這功能沒uj5u.com熱心網友回復:
有沒有可能通過其他方式達到這效果呢?uj5u.com熱心網友回復:
也遇到過這個問題,沒解決,最后還是一個一個匯出了,我那時候就是固定3個,還好,如果很多或者不固定就會麻煩一點,mark一下
uj5u.com熱心網友回復:
如查詢的陳述句是固定的,可以考慮存盤為 XML 檔案,也可以用 excel 打開;uj5u.com熱心網友回復:
右鍵 copy to execl 選擇 copy all as ... 就可以把多個查詢結果匯出來了。uj5u.com熱心網友回復:
可以使用UTL_FILE包,demo:
DECLARE
VSFILE UTL_FILE.FILE_TYPE; --定義用于接收檔案句柄的型別
BEGIN
--DBMS_OUTPUT.ENABLE(1000000); -->避免報錯ORA-20000: ORU-10027: BUFFER OVERFLOW, LIMIT OF 10000 BYTES
--檔案命名規則..把表資料時間當做檔案命名...
--開始打開檔案
VSFILE := UTL_FILE.FOPEN('DUMP_DIR01', 'EXCEL_DATA.CSV', 'W');
/*引數介紹:
UTL_FILE.FOPEN(LOCATION IN VARCHAR2, FILENAME IN VARCHAR2, OPEN_MODE IN VARCHAR2) RETURN FILE_TYPE;
LOCATION 是檔案存放的DB目錄名稱,-------執行用戶要有對DIR目錄的讀寫權限
FILENAME 是檔案名,
OPEN_MODE是打開模式('R'是讀文本,'W'是寫文本,'A'是附加文本,引數不分大小寫,如果指定'A'但是檔案不存在,它會用'W'先創建出來,'W'有覆寫的功能)*/
--檔案欄位標頭列印
UTL_FILE.PUT_LINE(VSFILE, 'A,B,C');
--每個檔案加載行數[每次進入回圈都賦值為0].排除標頭部分
--將FOR回圈查詢的內容
FOR CUR IN (SELECT LEVEL AS A, LEVEL + 1 AS B, LEVEL + 2 AS C
FROM DUAL
CONNECT BY LEVEL <= 10) LOOP
/*UTL_FILE.PUT_LINE 若需要EXCEL格式,需要每欄位用逗號隔開,,WINDOWS EXCEL工具打開默認就是EXCEL格式啦*/
UTL_FILE.PUT_LINE(VSFILE, CUR.A || ',' || CUR.B || ',' || CUR.C);
END LOOP;
--放在LOOP 后,否則報錯 ORA-29282: 檔案 ID 無效/ORA-06512: 在 "SYS.UTL_FILE", LINE 878
--若不寫如下 強制輸出緩沖/關閉句柄,可能存在匯出資料少于查詢條目
UTL_FILE.FFLUSH(VSFILE);
UTL_FILE.FCLOSE(VSFILE);
END;
/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/21218.html
標籤:基礎和管理
