亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? demo07.sql

?? Expert Oracle Database Architecture 9i and 10g sql源碼
?? SQL
字號:
create or replace package unloader
AUTHID CURRENT_USER
as
/* Function run -- unloads data from any query into a file
                   and creates a control file to reload that
                   data into another table

    p_query      = SQL query to "unload".  May be virtually any query.
    p_tname      = Table to load into.  Will be put into control file.
    p_mode       = REPLACE|APPEND|TRUNCATE -- how to reload the data
    p_dir        = directory we will write the ctl and dat file to.
    p_filename   = name of file to write to.  I will add .ctl and .dat
                   to this name
    p_separator  = field delimiter.  I default this to a comma.
    p_enclosure  = what each field will be wrapped in
    p_terminator = end of line character.  We use this so we can unload
              and reload data with newlines in it.  I default to
             "|\n" (a pipe and a newline together) and "|\r\n" on NT.
              You need only to override this if you believe your
              data will have that sequence in it. I ALWAYS add the
              OS "end of line" marker to this sequence, you should not
    */
    function run( p_query     in varchar2,
                  p_tname     in varchar2,
                  p_mode      in varchar2 default 'REPLACE',
                  p_dir       in varchar2,
                  p_filename  in varchar2,
                  p_separator in varchar2 default ',',
                  p_enclosure in varchar2 default '"',
                  p_terminator in varchar2 default '|' )
    return number;
end;
/
create or replace package body unloader
as


g_theCursor     integer default dbms_sql.open_cursor;
g_descTbl       dbms_sql.desc_tab;
g_nl            varchar2(2) default chr(10);


function to_hex( p_str in varchar2 ) return varchar2
is
begin
    return to_char( ascii(p_str), 'fm0x' );
end;

function is_windows return boolean
is
        l_cfiles varchar2(4000);
        l_dummy  number;
begin
 if (dbms_utility.get_parameter_value( 'control_files', l_dummy, l_cfiles )>0)
 then
       return instr( l_cfiles, '\' ) > 0;
 else
       return FALSE;
 end if;
end;

procedure  dump_ctl( p_dir        in varchar2,
                     p_filename   in varchar2,
                     p_tname      in varchar2,
                     p_mode       in varchar2,
                     p_separator  in varchar2,
                     p_enclosure  in varchar2,
                     p_terminator in varchar2 )
is
    l_output        utl_file.file_type;
    l_sep           varchar2(5);
    l_str           varchar2(5) := chr(10);
    
begin
    if ( is_windows )
    then
        l_str := chr(13) || chr(10);
    end if;

    l_output := utl_file.fopen( p_dir, p_filename || '.ctl', 'w' );

    utl_file.put_line( l_output, 'load data' );
    utl_file.put_line( l_output, 'infile ''' ||
                                  p_filename || '.dat'' "str x''' ||
                                  utl_raw.cast_to_raw( p_terminator ||
                                  l_str ) || '''"' );
    utl_file.put_line( l_output, 'into table ' || p_tname );
    utl_file.put_line( l_output, p_mode );
    utl_file.put_line( l_output, 'fields terminated by X''' ||
                                  to_hex(p_separator) ||
                                 ''' enclosed by X''' ||
                                  to_hex(p_enclosure) || ''' ' );
    utl_file.put_line( l_output, '(' );

    for i in 1 .. g_descTbl.count
    loop
        if ( g_descTbl(i).col_type = 12 )
        then
            utl_file.put( l_output, l_sep || g_descTbl(i).col_name ||
                               ' date ''ddmmyyyyhh24miss'' ');
        else
            utl_file.put( l_output, l_sep || g_descTbl(i).col_name ||
                          ' char(' ||
                          to_char(g_descTbl(i).col_max_len*2) ||' )' );
        end if;
        l_sep := ','||g_nl ;
    end loop;
    utl_file.put_line( l_output, g_nl || ')' );
    utl_file.fclose( l_output );
end;

function quote(p_str in varchar2, p_enclosure in varchar2)
         return varchar2
is
begin
    return p_enclosure ||
           replace( p_str, p_enclosure, p_enclosure||p_enclosure ) ||
           p_enclosure;
end;

function run( p_query        in varchar2,
              p_tname     in varchar2,
              p_mode      in varchar2 default 'REPLACE',
              p_dir       in varchar2,
              p_filename  in varchar2,
              p_separator in varchar2 default ',',
              p_enclosure in varchar2 default '"',
              p_terminator in varchar2 default '|' ) return number
is
    l_output        utl_file.file_type;
    l_columnValue   varchar2(4000);
    l_colCnt        number default 0;
    l_separator     varchar2(10) default '';
    l_cnt           number default 0;
    l_line          long;
    l_datefmt       varchar2(255);
    l_descTbl       dbms_sql.desc_tab;
begin
    select value
      into l_datefmt
      from nls_session_parameters
     where parameter = 'NLS_DATE_FORMAT';

    /*
       Set the date format to a big numeric string. Avoids
       all NLS issues and saves both the time and date.
    */
    execute immediate
       'alter session set nls_date_format=''ddmmyyyyhh24miss'' ';

    /*
       Set up an exception block so that in the event of any
       error, we can at least reset the date format.
    */
    begin
        /*
           Parse and describe the query. We reset the
           descTbl to an empty table so .count on it
           will be reliable.
        */
        dbms_sql.parse( g_theCursor, p_query, dbms_sql.native );
        g_descTbl := l_descTbl;
        dbms_sql.describe_columns( g_theCursor, l_colCnt, g_descTbl );

        /*
           Create a control file to reload this data
           into the desired table.
        */
        dump_ctl( p_dir, p_filename, p_tname, p_mode, p_separator,
                         p_enclosure, p_terminator );

        /*
           Bind every single column to a varchar2(4000). We don't care
           if we are fetching a number or a date or whatever.
           Everything can be a string.
        */
        for i in 1 .. l_colCnt loop
           dbms_sql.define_column( g_theCursor, i, l_columnValue, 4000);
        end loop;

        /*
           Run the query - ignore the output of execute. It is only
           valid when the DML is an insert/update or delete.
        */
        l_cnt := dbms_sql.execute(g_theCursor);

        /*
           Open the file to write output to and then write the
           delimited data to it.
        */
        l_output := utl_file.fopen( p_dir, p_filename || '.dat', 'w',
                                           32760 );
        loop
            exit when ( dbms_sql.fetch_rows(g_theCursor) <= 0 );
            l_separator := '';
            l_line := null;
            for i in 1 .. l_colCnt loop
                dbms_sql.column_value( g_theCursor, i,
                                       l_columnValue );
                l_line := l_line || l_separator ||
                           quote( l_columnValue, p_enclosure );
                l_separator := p_separator;
            end loop;
            l_line := l_line || p_terminator;
            utl_file.put_line( l_output, l_line );
            l_cnt := l_cnt+1;
        end loop;
        utl_file.fclose( l_output );

        /*
           Now reset the date format and return the number of rows
           written to the output file.
        */
        execute immediate
           'alter session set nls_date_format=''' || l_datefmt || '''';
        return l_cnt;
exception
        /*
           In the event of ANY error, reset the data format and
           re-raise the error.
        */
        when others then
           execute immediate
           'alter session set nls_date_format=''' || l_datefmt || '''';
           RAISE;
    end;
end run;


end unloader;
/
set serveroutput on
create or replace directory my_dir as '/tmp';
declare
    l_rows    number;
begin
    l_rows := unloader.run
              ( p_query      => 'select * from scott.emp order by empno',
                p_tname      => 'emp',
                p_mode       => 'replace',
                p_dir        => 'MY_DIR',
                p_filename   => 'emp',
                p_separator  => ',',
                p_enclosure  => '"',
                p_terminator => '~' );

    dbms_output.put_line( to_char(l_rows) ||
                          ' rows extracted to ascii file' );
end;
/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷拍欧美精品| 不卡一区中文字幕| 亚洲6080在线| 亚洲一区精品在线| 亚洲1区2区3区视频| 日本伊人色综合网| 蜜臀久久久久久久| 国产麻豆视频精品| 丰满白嫩尤物一区二区| 波多野结衣91| 色狠狠av一区二区三区| 欧美日韩精品三区| 欧美电影免费提供在线观看| 日韩欧美高清一区| 中文无字幕一区二区三区| 国产精品无码永久免费888| 亚洲欧洲日韩综合一区二区| 一区二区三区自拍| 免费观看久久久4p| 国产精品123| 91一区一区三区| 欧美一区二区观看视频| 久久久久久影视| 亚洲欧美日韩电影| 麻豆精品在线播放| a4yy欧美一区二区三区| 在线视频中文字幕一区二区| 欧美一区二区三区免费观看视频| 精品精品欲导航| 亚洲美女区一区| 韩国中文字幕2020精品| 成人动漫一区二区| 69堂国产成人免费视频| 国产欧美精品一区二区色综合 | 日韩欧美aaaaaa| 国产精品护士白丝一区av| 亚洲国产精品一区二区久久恐怖片| 青青草原综合久久大伊人精品优势 | 亚洲影视在线播放| 国内久久精品视频| 欧美日韩一二三区| 日本一区二区三区电影| 婷婷一区二区三区| 91色porny| 久久久久久久久久看片| 亚洲国产精品影院| 成人app软件下载大全免费| 日韩欧美中文字幕制服| 国产精品全国免费观看高清| 免费成人你懂的| 91久久精品网| 亚洲丝袜自拍清纯另类| 国产一区二区三区蝌蚪| 91精品国产欧美日韩| 一区二区激情视频| 成人午夜精品在线| 久久这里只有精品首页| 午夜精品一区二区三区三上悠亚| 99免费精品视频| 精品国偷自产国产一区| 免费在线看一区| 欧洲一区在线电影| 中文字幕亚洲一区二区va在线| 久久91精品久久久久久秒播| 欧美日韩国产另类不卡| 亚洲国产日韩一区二区| 99热这里都是精品| 国产精品色在线| 国产乱子伦一区二区三区国色天香| 欧美电影在线免费观看| 偷拍日韩校园综合在线| 欧美综合亚洲图片综合区| 亚洲婷婷综合久久一本伊一区| 国产精品自拍av| xvideos.蜜桃一区二区| 国内精品免费在线观看| 欧美va亚洲va在线观看蝴蝶网| 日本三级亚洲精品| 4438x亚洲最大成人网| 图片区日韩欧美亚洲| 欧美电影影音先锋| 美女一区二区久久| 2021国产精品久久精品| 激情都市一区二区| 中文字幕高清不卡| 成人深夜视频在线观看| 亚洲欧美日韩一区二区三区在线观看| 不卡av免费在线观看| 亚洲码国产岛国毛片在线| 色偷偷一区二区三区| 午夜视频在线观看一区二区| 7777精品伊人久久久大香线蕉超级流畅 | 一区二区日韩电影| 欧美日韩一区二区三区四区五区| 亚洲一区二区三区自拍| 欧美喷潮久久久xxxxx| 免费在线观看精品| 久久精品在这里| 97精品超碰一区二区三区| 亚洲一二三区在线观看| 91精品国产乱码久久蜜臀| 国产一区二区在线看| 中文字幕日韩av资源站| 欧美丰满美乳xxx高潮www| 狠狠色狠狠色综合日日91app| 国产精品蜜臀在线观看| 欧美日韩综合色| 国产精品456露脸| 亚洲自拍偷拍av| 久久午夜老司机| 欧美性一二三区| 日本vs亚洲vs韩国一区三区 | 日产精品久久久久久久性色| 日韩一级二级三级| 不卡欧美aaaaa| 日本亚洲一区二区| 国产精品国产三级国产专播品爱网| 91久久香蕉国产日韩欧美9色| 久久99久久久久久久久久久| 亚洲少妇中出一区| 久久久综合九色合综国产精品| 色狠狠av一区二区三区| 久久99久久精品| 日韩综合在线视频| 国产精品久久毛片av大全日韩| 3d成人h动漫网站入口| 91丨国产丨九色丨pron| 久久99精品国产.久久久久久| 尤物在线观看一区| 国产欧美日韩在线视频| 91精品免费在线| 欧美亚洲一区二区在线观看| 国产成人欧美日韩在线电影| 强制捆绑调教一区二区| 一区二区三区成人在线视频| 国产精品毛片无遮挡高清| 精品国产一区二区亚洲人成毛片| 欧美日韩亚洲综合| 色欧美88888久久久久久影院| 国产精品一级片在线观看| 蜜桃av一区二区| 日韩电影在线观看一区| 亚洲精品第1页| 亚洲色图制服诱惑 | 欧美一区二区三区色| 99久久精品国产网站| 成人爱爱电影网址| 国产精品白丝jk白祙喷水网站| 青青草国产成人av片免费| 亚洲成人av福利| 亚洲成人午夜影院| 亚洲国产乱码最新视频| 一区二区三区在线视频免费观看| 亚洲乱码中文字幕| 亚洲精品国产无天堂网2021 | 884aa四虎影成人精品一区| 欧美日韩亚洲国产综合| 欧美日本视频在线| 欧美裸体一区二区三区| 欧美午夜精品理论片a级按摩| 欧美性受xxxx黑人xyx性爽| 欧美无砖砖区免费| 欧美日韩和欧美的一区二区| 欧美日韩在线播| 欧美一区二区三区视频在线观看| 日韩一区二区免费视频| 欧美电影免费观看完整版| 久久久久久黄色| 国产欧美精品一区| 成人免费在线播放视频| 亚洲免费视频中文字幕| 亚洲一线二线三线视频| 婷婷久久综合九色综合绿巨人 | 免费日本视频一区| 精品在线你懂的| 成人永久aaa| 日本乱人伦一区| 在线播放/欧美激情| 久久久久久久久蜜桃| 国产精品的网站| 日韩精品一级二级| 成人性生交大片免费看视频在线| www..com久久爱| 欧美美女一区二区在线观看| 久久久影视传媒| 亚洲国产视频在线| 久久国产精品72免费观看| 99久久精品免费看国产| 在线91免费看| 国产精品拍天天在线| 无码av免费一区二区三区试看 | 亚洲精品成人a在线观看| 日韩在线播放一区二区| 国产69精品久久久久毛片| 日韩欧美一级二级三级| 国产欧美精品在线观看| 午夜精品久久久久| 成a人片亚洲日本久久| 91精品国产综合久久福利 | 91麻豆精品久久久久蜜臀|