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

           




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

              (

                  P_QUERY 
          IN VARCHAR2,                        -- PLSQL文

                  P_DIR 
          IN VARCHAR2,                          -- 導(dǎo)出的文件放置目錄

                  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 鮑國鈺 閱讀(6543) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           

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

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 湘乡市| 洛浦县| 陕西省| 东兰县| 贵溪市| 三河市| 和平县| 泾源县| 邯郸县| 启东市| 永平县| 贺兰县| 梓潼县| 兴仁县| 红安县| 宽甸| 修文县| 灵台县| 兴文县| 肇州县| 嫩江县| 丰台区| 岳普湖县| 黄平县| 乳山市| 湾仔区| 怀集县| 昔阳县| 大竹县| 治多县| 诸暨市| 台山市| 永善县| 隆子县| 岳普湖县| 伊金霍洛旗| 上思县| 娱乐| 英超| 关岭| 剑河县|