1 创建directory
  create or replace directory DIR
  as 'd:\temp';
  为用户赋予该directory的权限
grant all on directroy dir to public;
2 创建函数function
create or replace function tofile(p_query in varchar2,
                                  p_separator in varchar2,
                                  p_dir in varchar2,
                                  p_filename in varchar2)
return number
is
  l_cursor      integer default dbms_sql.open_cursor;
  l_output      utl_file.file_type;
  l_columnValue varchar2(2000);
 l_status      integer;
  l_colCnt      number default 0; 
  l_separator   varchar2(10) default '';
  l_cnt number  default 0;
  rec_tab       dbms_sql.desc_tab;
  col_num       number;
begin
  l_output := utl_file.fopen( p_dir,p_filename,'w' );
  dbms_sql.parse( l_cursor ,p_query, dbms_sql.native ); 
 
/*写入该SQL查询结果的列名,以空格隔开*/
  dbms_sql.describe_columns(l_cursor,l_colCnt,rec_tab);
  col_num := rec_tab.first;
  if( col_num is not null) then
     loop
       utl_file.put( l_output , l_separator||rec_tab(col_num).col_name);
       col_num := rec_tab.next(col_num);
       l_separator :=' ';
      EXIT WHEN (col_num IS NULL);
     end loop;
  end if;
    utl_file.new_line( l_output );
  /*写入SQL查询结果的列值*/
  for i in 1.. l_colCnt loop    
         dbms_sql.define_column( l_cursor , i,
                                 l_columnValue,2000);      
  end loop;
  l_status :=dbms_sql.execute(l_cursor);
  loop
     exit when ( dbms_sql.fetch_rows( l_cursor ) <= 0 );
     l_separator :='';
     for i in 1 .. l_colCnt loop            
        dbms_sql.column_value( l_cursor ,i,
                              l_columnValue);
        utl_file.put( l_output , l_separator || l_columnValue );     
        l_separator := p_separator;
     end loop;
     utl_file.new_line( l_output );
     l_cnt := l_cnt+1;
  end loop;
dbms_sql.close_cursor( l_cursor );
  utl_file.fclose( l_output );
  return l_cnt;
end tofile;
3 创建执行该function的存储过程procedure
create or replace procedure test_tofile
as
    l_rows       number;
    l_filename   varchar2(100);
    v_sql        varchar2(100);
    l_temp       varchar2(100);
begin
    v_sql := 'select to_char(sysdate,''yyyymmdd'') from dual';
EXECUTE IMMEDIATE v_sql
                INTO l_temp;
l_filename := 'dbperform_'|| l_temp || '.txt';
   l_rows := tofile( 'SELECT fs.tablespace_name TABLESPACE_NAME,
                              df.totalspace TABLESPACE_TOTAL_SIZE,
                              (df.totalspace - fs.freespace) MB_USED,
                              fs.freespace MB_FREE,
                              round(100 * (fs.freespace / df.totalspace),2) PCT_FREE
                       FROM
                       (SELECT tablespace_name, ROUND(SUM(bytes) / 1048576) TotalSpace FROM dba_data_files GROUP BY tablespace_name ) df,
                       (SELECT tablespace_name, ROUND(SUM(bytes) / 1048576) FreeSpace FROM dba_free_space GROUP BY tablespace_name ) fs
                        WHERE df.tablespace_name = fs.tablespace_name(+)
                        order by PCT_FREE ASC',
                        ',', 'DIR', l_filename );
dbms_output.put_line(l_rows);
end;
/*这里的'DIR'指明了directory dir,不过,由于是在WINDOWS环境,需要大写该directory名*/

4 调用该存储过程

SQL>exec test_tofile();

转载于:https://www.cnblogs.com/WindyGu/archive/2013/03/06/2946317.html

[Oracle 学习] Oracle中将查询语句执行结果导入文本文件相关推荐

  1. oracle带时间查询语句,请教oracle按时间分组查询语句的写法

    请教oracle按时间分组查询语句的写法 最近由于要做报表,在一张表中有一个字段为date类型,现在想要在一段时间内(比如一年)能够按照时间段分组查询记录总和,比如我要能够查询2007年到2009年间 ...

  2. Oracle EBS 常用表 查询语句

    ORACLE EBS常用表查询语句 1.  OU.库存组织 SELECT hou.organization_id ou_org_id,           --org_id   hou.name ou ...

  3. sql server查询历史进程_学习笔记 | SequoiaDB SQL查询语句执行过程

    本篇笔记将为大家介绍 SequoiaDB 巨杉数据库查询 SQL 语句的执行过程,以及查询语句执行过程中实例层.协调节点.编码节点.数据节点各自承担的功能. 应用程序或用户想要从数据库查询需要的数据, ...

  4. 三、MySql查询语句执行的特征

    查询语句执行的特征 七个查询命令中,除了having命令之外,剩下的六个查询命令在执行完毕都会生成全新的临时表: 七个查询命令中,除了from命令之外,剩下的六个查询命令操作的临时表都是上一个查询命令 ...

  5. mysql五补充部分:SQL逻辑查询语句执行顺序

    mysql五补充部分:SQL逻辑查询语句执行顺序一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SE ...

  6. mysql 查询语句执行顺序_MySQL 查询语句执行过程

    MySQL 查询语句执行过程 Mysql分为server层和存储引擎两部分,或许可以再加一层连接层 连接层(器) Mysql使用的是典型的C/S架构.连接器通过典型的TCP握手完成连接. 需要注的是, ...

  7. java mysql查询语句_Mysql查询语句执行过程

    Mysql查询语句执行过程 Mysql分为server层和存储引擎两部分,或许可以再加一层连接层 连接层(器) Mysql使用的是典型的C/S架构.连接器通过典型的TCP握手完成连接. 需要注的是, ...

  8. MyBatis3源码解析(3)查询语句执行

    简介 上篇探索了MyBatis中如何获取数据库连接,本篇继续探索,来看看MyBatis中如何执行一条查询语句 测试代码 本篇文中用于调试的测试代码请参考:MyBatis3源码解析(1)探索准备 完整的 ...

  9. 使用explain查询select查询语句执行计划

    1.使用explain查询select查询语句执行计划 mysql> select * from baba where name ='fjdsjf'; +------+--------+ | i ...

最新文章

  1. html5 div 鼠标跟随,CSS实用:DIV+CSS打造跟随鼠标的层
  2. 在CentOS/Debian/Ubuntu上编译安装最新版gnu make 和GNU 'binutils' (as and ld)
  3. Java数组常用操作,创建,比较,排序,检索,打印数组;copyOf,equals,sort,toString
  4. logging下的path配置的是自己本地项目下的地址
  5. 新内容,新交互”全球视频云创新挑战
  6. 双线性插值理论与代码实例
  7. Hadoop入门(二十四)Mapreduce的求TopK程序
  8. 来华30载,这些都是Oracle的神来之笔……
  9. PostgreSQL Server进程检查启动脚本
  10. java并发编程(四) 线程池 任务执行、终止源码分析
  11. 宏观经济指标分析与数据可视化——PMI
  12. MAX30102 高灵敏度脉搏氧器和心率传感器说明书
  13. 在中琅条码打印软件中怎样实现CMYK的设置
  14. Redhat Linux 8.3 安装方法
  15. Enolsoft PDF Converter with OCR Mac(PDF格式转换及OCR识别软件)
  16. idea高版本设置注入飘红(红色波浪线)
  17. springboot奥运会志愿者管理系统
  18. 报错!Exception in thread “main“ java.lang.UnsatisfiedLinkError: ilog.cplex.Cplex.CPXopenCPLEX([I)J
  19. css:使用div绘制一条竖线
  20. 静态重定位和动态重定位

热门文章

  1. 【Docker】 安装 mysql
  2. 【css】文字垂直居中
  3. springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。
  4. 【thymeleaf】Access to request parameters is forbidden in this context
  5. linux java程序启动脚本
  6. android 裁剪圆角矩形,android – 如何使用中心裁剪创建部分圆角矩形可绘制而不创建新位图?...
  7. python的函数结构_Python学习(四)常见函数及控制结构
  8. linux实验五 信号应用,实验五 进程间通信(中)
  9. java join yield_java中join和yield有什么区别?
  10. 三相pmsm矢量控制仿真模型_学术|基于新型滑模观测器的永磁同步电机无传感器矢量控制系统...