最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

oracle使用存儲過程將表數(shù)據(jù)以excel格式導出的操作方法

 更新時間:2024年07月25日 09:56:57   作者:追求完美9196  
雖然目前pl/sql developer等數(shù)據(jù)庫客戶端軟件都支持將表數(shù)據(jù)以excel格式導出,但是如果數(shù)據(jù)量大,需要等客戶端加載表數(shù)據(jù)等待很久,這篇文章給大家分享oracle使用存儲過程將表數(shù)據(jù)以excel格式導出的操作方法,需要的朋友可以參考下

雖然目前pl/sql developer等數(shù)據(jù)庫客戶端軟件都支持將表數(shù)據(jù)以excel格式導出,但是如果數(shù)據(jù)量大,需要等客戶端加載表數(shù)據(jù)等待很久。而且,可能會遇到定時以excel格式導出數(shù)據(jù)的要求。因此我自己寫了一個使用存儲過程將表數(shù)據(jù)以excel格式導出的存儲過程。

  • 服務(wù)端新建目錄
    create directory DIR_EXCEL as 'D:\DIR_EXCEL';
  • 新建存儲過程
create or replace procedure pr_export_to_excel(p_table_name      varchar2,
                                               p_where_predicate varchar2 default null) is
  /*
  propose:根據(jù)表名和where條件生成excel
  p_where_predicate:where條件語句
  */
  out_file          utl_file.file_type; --定義一個文件類型變量
  str1              varchar2(20000); --定義一個字符串變量,用于存儲表1的字段名
  str1_chr          varchar2(30000);
  l_sql             varchar2(20000);
  l_where_predicate varchar2(30000) default 'where ' || p_where_predicate;
begin
  if p_where_predicate is null then
    l_where_predicate := null;
  end if;
  --查詢表1的字段名,用制表符分隔,并賦值給str1
  select listagg(column_name, chr(9)) within group(order by column_id)
    into str1
    from user_tab_columns
   where table_name = upper(p_table_name);
  --查詢表1的字段名,用制表符分隔,并賦值給str1_chr
  select listagg(case
                   when t.DATA_TYPE = 'DATE' OR t.DATA_TYPE LIKE 'TIMESTAMP%' THEN
                    'to_char(f_cur.' || column_name || ',''YYYYMMDD HH24:MI:SS'')'
                   else
                    'f_cur.' || column_name
                 END,
                 '||chr(9)||') within group(order by column_id)
    into str1_chr
    from user_tab_columns t
   where table_name = upper(p_table_name);
  l_sql := '
  declare
    out_file utl_file.file_type; --定義一個文件類型變量
  BEGIN
    --打開一個文件,指定目錄對象、文件名和寫入模式
    out_file := utl_file.fopen('' DIR_EXCEL '',
                               ''' || p_table_name ||
           '.xls '',
                               '' W '',
                               32767);
    utl_file.put_line(out_file,
                      ''' || str1 ||
           '''); --寫入字段名,換行
    for f_cur in (select *
                    from ' || p_table_name || ' t ' ||
           l_where_predicate || ') loop
      utl_file.put_line(out_file, ' || str1_chr || ');
    end loop;
    utl_file.fclose(out_file);
  exception
    when others then
      utl_file.fclose(out_file); --關(guān)閉文件,防止異常關(guān)閉
      dbms_output.put_line(SQLERRM);
      dbms_output.put_line(dbms_utility.format_error_backtrace);
      raise; --拋出異常信息
  end;
  ';
  dbms_output.put_line(l_sql);
  --dbms_output.put_line(l_sql);
  execute immediate l_sql;
exception
  when others then
    utl_file.fclose(out_file); --關(guān)閉文件,防止異常關(guān)閉
    dbms_output.put_line(SQLERRM);
    dbms_output.put_line(dbms_utility.format_error_backtrace);
    raise; --拋出異常信息
end pr_export_to_excel;

3.調(diào)用存儲過程
call pr_export_to_excel('TEST','NAME='''123''');

4.去目錄'D:\DIR_EXCEL'取出TEST.xls文件

到此這篇關(guān)于oracle使用存儲過程將表數(shù)據(jù)以excel格式導出的文章就介紹到這了,更多相關(guān)oracle 表數(shù)據(jù)excel格式導出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

丘北县| 拉萨市| 安仁县| 衡山县| 乌拉特前旗| 旬阳县| 崇义县| 江都市| 赤壁市| 德昌县| 彭阳县| 柳林县| 屏南县| 永春县| 茌平县| 三穗县| 榕江县| 来安县| 越西县| 崇仁县| 青岛市| 无极县| 台中市| 罗平县| 梅州市| 商水县| 崇仁县| 绥江县| 阿荣旗| 澜沧| 昌宁县| 南汇区| 阳高县| 丹凤县| 葫芦岛市| 宁夏| 芦山县| 遂平县| 威远县| 漳州市| 三亚市|