Oracle 通過儲存過程來生成CSV檔案
建立directory
建立儲存過程
CREATE OR REPLACE PROCEDURE SQL_TO_CSV(
P_DIR IN VARCHAR2, -- output directory
P_FILENAME IN VARCHAR2 -- csv file name
) IS
L_OUTPUT UTL_FILE.FILE_TYPE;
L_SEPARATOR VARCHAR2(1);
L_DESCTBL DBMS_SQL.DESC_TAB;
P_MAX_LINESIZE NUMBER := 32000;
--DEFINE A CURSOR
CURSOR c1 IS SELECT D_START_DATE FROM OSMSR_VIEW_OPERATION_HISTORY WHERE ROWNUM <= 10;
v_start_date OSMSR_VIEW_OPERATION_HISTORY.D_START_DATE%TYPE;
BEGIN
--OPEN FILE
L_OUTPUT := UTL_FILE.FOPEN(P_DIR, P_FILENAME, 'W', P_MAX_LINESIZE);
--DEFINE DATE FORMAT
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS''';
--OPEN CURSOR
OPEN c1;
LOOP -- Fetches columns into variables
FETCH c1 INTO v_start_date;
EXIT WHEN c1%NOTFOUND;
--DEFINE THE SEPARATOR ,
L_SEPARATOR := '';
UTL_FILE.PUT(L_OUTPUT, L_SEPARATOR || v_start_date);
L_SEPARATOR := ',';
--CHANGE THE LINE
UTL_FILE.NEW_LINE(L_OUTPUT);
END LOOP;
--CLOSE CURSOR
CLOSE c1;
--CLOSE FILE
UTL_FILE.FCLOSE(L_OUTPUT);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
呼叫儲存過程,REPORT_DIR是directory的名稱,02.csv是生成的CSV檔名
BEGIN
SQL_TO_CSV('REPORT_DIR', '02.csv');
END;
create directory REPORT_DIR as '/u01/app/oracle/report';
grant all on directory REPORT_DIR to TEST;
建立儲存過程
CREATE OR REPLACE PROCEDURE SQL_TO_CSV(
P_DIR IN VARCHAR2, -- output directory
P_FILENAME IN VARCHAR2 -- csv file name
) IS
L_OUTPUT UTL_FILE.FILE_TYPE;
L_SEPARATOR VARCHAR2(1);
L_DESCTBL DBMS_SQL.DESC_TAB;
P_MAX_LINESIZE NUMBER := 32000;
--DEFINE A CURSOR
CURSOR c1 IS SELECT D_START_DATE FROM OSMSR_VIEW_OPERATION_HISTORY WHERE ROWNUM <= 10;
v_start_date OSMSR_VIEW_OPERATION_HISTORY.D_START_DATE%TYPE;
BEGIN
--OPEN FILE
L_OUTPUT := UTL_FILE.FOPEN(P_DIR, P_FILENAME, 'W', P_MAX_LINESIZE);
--DEFINE DATE FORMAT
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS''';
--OPEN CURSOR
OPEN c1;
LOOP -- Fetches columns into variables
FETCH c1 INTO v_start_date;
EXIT WHEN c1%NOTFOUND;
--DEFINE THE SEPARATOR ,
L_SEPARATOR := '';
UTL_FILE.PUT(L_OUTPUT, L_SEPARATOR || v_start_date);
L_SEPARATOR := ',';
--CHANGE THE LINE
UTL_FILE.NEW_LINE(L_OUTPUT);
END LOOP;
--CLOSE CURSOR
CLOSE c1;
--CLOSE FILE
UTL_FILE.FCLOSE(L_OUTPUT);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
呼叫儲存過程,REPORT_DIR是directory的名稱,02.csv是生成的CSV檔名
BEGIN
SQL_TO_CSV('REPORT_DIR', '02.csv');
END;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2125200/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle通過SQL Plus生成CSV、Excel檔案OracleSQLExcel
- 將圖片檔案儲存到Oracle的儲存過程Oracle儲存過程
- Oracle儲存過程Oracle儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- CSV檔案儲存
- Oracle儲存過程-1Oracle儲存過程
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程例子Oracle儲存過程
- Oracle建立儲存過程Oracle儲存過程
- oracle plsql儲存過程OracleSQL儲存過程
- ORACLE 儲存過程示例Oracle儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- 通過SQL儲存過程刪除過期的資料庫Bak備份檔案SQL儲存過程資料庫
- Oracle '批量'禁用外來鍵的儲存過程Oracle儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- oracle 儲存過程批次提交Oracle儲存過程
- oracle 儲存過程學習Oracle儲存過程
- [Flashback]Oracle flashback儲存過程Oracle儲存過程
- Oracle儲存過程學習Oracle儲存過程
- oracle的儲存過程格式Oracle儲存過程
- java 呼叫oracle 儲存過程JavaOracle儲存過程
- oracle--08儲存過程Oracle儲存過程
- 輸入表名後自動生成sqlldr控制檔案儲存過程SQL儲存過程
- 儲存過程批量生成awr指令碼儲存過程指令碼
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- 儲存過程儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- oracle儲存過程書寫格式Oracle儲存過程
- Oracle Pl/SQL 之 儲存過程OracleSQL儲存過程
- C#呼叫 oracle儲存過程C#Oracle儲存過程
- Oracle儲存過程基本語法Oracle儲存過程
- [Procedure]Oracle之分頁儲存過程Oracle儲存過程
- oracle 儲存過程遊標的使用Oracle儲存過程
- C#呼叫Oracle儲存過程C#Oracle儲存過程
- java中呼叫ORACLE儲存過程JavaOracle儲存過程
- 用java呼叫oracle儲存過程JavaOracle儲存過程
- Oracle 基礎 ----procedure(儲存過程)Oracle儲存過程
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程