鮑國鈺的博客
          謀事在人成事在天
          posts - 5,  comments - 6,  trackbacks - 0

           




          -- 建立存儲過程
          CREATE OR REPLACE PROCEDURE SQL_TO_CSV

              (

                  P_QUERY 
          IN VARCHAR2,                        -- PLSQL文

                  P_DIR 
          IN VARCHAR2,                          -- 導出的文件放置目錄

                  P_FILENAME 
          IN VARCHAR2                      -- CSV名

          )

          IS

                  L_OUTPUT UTL_FILE.FILE_TYPE;

                  L_THECURSOR 
          INTEGER DEFAULT DBMS_SQL.OPEN_CURSOR;

                  L_COLUMNVALUE 
          VARCHAR2(4000);

                  L_STATUS 
          INTEGER;

                  L_COLCNT 
          NUMBER := 0;

                  L_SEPARATOR 
          VARCHAR2(1);

                  L_DESCTBL DBMS_SQL.DESC_TAB;

                  P_MAX_LINESIZE 
          NUMBER := 32000;

          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

                  DBMS_SQL.PARSE( L_THECURSOR, P_QUERY, DBMS_SQL.NATIVE );

                  DBMS_SQL.DESCRIBE_COLUMNS( L_THECURSOR, L_COLCNT, L_DESCTBL );

           

                  
          --DUMP TABLE COLUMN NAME

                  
          FOR I IN 1 .. L_COLCNT LOOP

                      UTL_FILE.PUT( L_OUTPUT, L_SEPARATOR 
          || '' || L_DESCTBL(I).COL_NAME || '' );

                      DBMS_SQL.DEFINE_COLUMN( L_THECURSOR, I, L_COLUMNVALUE, 
          4000 );

                      L_SEPARATOR :
          = ',';

                  
          END LOOP;

                  UTL_FILE.NEW_LINE( L_OUTPUT );

           

                  
          --EXECUTE THE QUERY STATEMENT

                  L_STATUS :
          = DBMS_SQL.EXECUTE(L_THECURSOR);

           

                  
          --DUMP TABLE COLUMN VALUE

                  
          WHILE ( DBMS_SQL.FETCH_ROWS(L_THECURSOR) > 0 ) LOOP

                      L_SEPARATOR :
          = '';

                      
          FOR I IN 1 .. L_COLCNT LOOP

                          DBMS_SQL.COLUMN_VALUE( L_THECURSOR, I, L_COLUMNVALUE );

                          UTL_FILE.PUT( L_OUTPUT, L_SEPARATOR 
          || '' ||

                          TRIM(BOTH 
          ' ' FROM REPLACE(L_COLUMNVALUE,'','””')) || '');

                          L_SEPARATOR :
          = ',';

                      
          END LOOP;

                      UTL_FILE.NEW_LINE( L_OUTPUT );

                  
          END LOOP;

           

                  
          --CLOSE CURSOR

                  DBMS_SQL.CLOSE_CURSOR(L_THECURSOR);

           

                  
          --CLOSE FILE

                  UTL_FILE.FCLOSE( L_OUTPUT );

          EXCEPTION

                  
          WHEN OTHERS THEN

                  RAISE;

          END;
          /

          -- 創(chuàng)建存放文件的目錄
          CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\';


          -- 執(zhí)行塊
           begin

              sql_to_csv(
          'select * from au_jxs ','MYDIR','EXAMPLE.CSV');

           
          end;
          /

           

          注意:生成的文件名,定義的directory名字要字母大寫。

          posted on 2011-09-13 17:07 鮑國鈺 閱讀(6546) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          <2011年9月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阿坝| 吉木乃县| 黔西县| 景宁| 昌江| 赤水市| 额尔古纳市| 闸北区| 内乡县| 资兴市| 绥滨县| 云和县| 浦城县| 永新县| 翁牛特旗| 山阴县| 丰镇市| 宁波市| 木里| 渑池县| 双城市| 黄陵县| 罗源县| 罗城| 肥城市| 黄骅市| 西华县| 乌拉特后旗| 西宁市| 大丰市| 深圳市| 班玛县| 昌黎县| 象山县| 河源市| 敦煌市| 威宁| 土默特右旗| 苍溪县| 江安县| 贵阳市|