在数据库的开发中,当PL/SQL语句很复杂的时候,我想写一些Log,就像java的Log4j那样。这样就可以很好的跟踪程序的运行情况。在网上找到的文章不是很好用,修改了一下。

1:在Oracle服务器上建立一个目录并指定权限(我这个是unix的。windows用c:\tmp之类的就行)

CREATE DIRECTORY TEMP AS '/tmp';

GRANT READ,WRITE ON DIRECTORY TEMP TO PUBLIC;

GRANT   EXECUTE  ON  SYS.UTL_FILE  TO  YOU_USER_NAME;

如果出现权限错误的话,注意自己登陆的方式,我是用oralce用户TelNet到Unix上的,然后connect / as sysdba。(windows 用户应该是:用sys用户登录到数据库(ora9i):conn sys/password@oraclesid as sysdba ,sys用户的缺省密码和system一样,都是manager)

2:写Log文件的SQL语句如下:

declare

file_handle utl_file.file_type;

buff varchar2(20);

cursor c1 is select  acloumn from t_atable;

begin

file_handle := utl_file.fopen('TEMP',log.txt','w');

open c1;

loop

fetch c1 into buff;

exit when c1%notfound;

utl_file.put_line(file_handle,buff);

end loop;

close c1;

utl_file.fclose(file_handle);

end;

这样,就应该可以了,file_handle := utl_file.fopen('TEMP',log.txt','w');中的'w'是指write,也可以是'a',append.

封装后是这样的:

procedure writeLog(logMessage in Varchar2) is

begin

IF logSwitch THEN

file_handle := utl_file.fopen('TEMP','x.txt','w');

utl_file.put_line(file_handle,logMessage);

utl_file.fclose(file_handle);

END IF;

end;

其中logSwitch 是boolean型,我定义在包中的。如果直接用的话可以是procedure writeLog(logMessage in Varchar2, logSwitch in boolean )

oracle数据库无法写入文件,如何在ORACLE的PL/SQL中将数据写入文件相关推荐

  1. 视频教程-赵强老师:Oracle数据库从10g到11g(4)PL/SQL编程基础-Oracle

    赵强老师:Oracle数据库从10g到11g(4)PL/SQL编程基础 毕业于清华大学,拥有超过13年的工作经验. Oracle认证讲师,拥有6年以上授课经验.精通Oracle数据库.中间(Weblo ...

  2. oracle数据库提示无监听,【原创】PL/SQL连数据库提示无监听程序

    一.问题描述: 安装好ORACLE服务器端后,利用PL/SQL连数据,提示无监听程序. 二.解决步骤: 1.检查防火墙. 将防火墙关闭. 2.查看监听服务. 在管理工具->服务中查看监听服务是否 ...

  3. PL/SQL 工具远程连接Oracle数据库方法,plsql免安装oracle客户端直接配置oci实战演示

    PL/SQL 工具远程连接 Oracle 数据库 第一章:PL/SQL 工具配置 ① oci 下载 ② oci 配置 ③ PL/SQL 工具配置 ④ PL/SQL 远程连接 Oracle 数据库演示 ...

  4. bak文件转oracle文件,如何在Oracle 11g中恢复.bak文件(How to restore .bak file in oracle 11g)...

    如何在Oracle 11g中恢复.bak文件(How to restore .bak file in oracle 11g) 我有Oracle 11g备份文件(.bak文件)如何在Oracle 11g ...

  5. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  6. Oracle数据库基础入门《一》Oracle服务器的构成

    Oracle数据库基础入门<一>Oracle服务器的构成 Oracle 服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统,也是一 个高效的 SQL 语句执行环境. Oracle ...

  7. 连接oracle数据库异常System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本

    1.连接oracle数据库异常System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本 本人在用公司用C#写的服务连接数据库oracle 时,报出上面的 ...

  8. oracle 没有数据库服务器,本地没有oracle数据库 连接远程服务器上的oracle数据库...

    由于项目开发测试,需要在本地连接远程的Oracle数据库 连接远程Oracle需要两个软件: 一个Oracle客户端,instantclient-basic-win32-11.2.0.1.0.zip ...

  9. oracle数据库加复合组件,浅谈oracle复合数据类型 (2)

    二.集合 类似C语言中的数组,在ORACLE7.3及以前的版本中只有一种集合称为PL/SQL表,这种类型的集合依然保留,就是索引(INDEX_BY)表. PL/SQL有三种类型的集合a.Index_b ...

最新文章

  1. 主流Kubernetes发行版梳理,看完就会选了
  2. Selenium支持高版本的FireFox
  3. Python多版本共存之pyenv
  4. WPF中实现先登录后启动主程序的方法
  5. STM32 基础系列教程 7 - 单脉冲PWM
  6. 前端月趋势榜:6 月新增的、最热门的 20 个前端开源项目 - 2106
  7. 【c++进阶:c++ 顺序容器vector,string,deque,list,forward_list,array常用性质】
  8. 第十周软件工程作业-每周例行报告
  9. 反射+javacsv+scv文件构建资源获取
  10. nginx 负载均衡tomcat
  11. 广电总局:坚决抵制含有暴力血腥等不良情节动画片上网播出
  12. 【Kafka】Consumer group 'console-consumer-28367' has no active members.
  13. 幼儿园小班上计算机课 作业内容是手口一致,小班幼儿手口不能一致的点数怎么办...
  14. 2018年湖南居民人均可支配收入25241元 出行餐饮成消费热点
  15. 在官网下载idea历史版本
  16. 齐次线性方程组与非齐次线性方程组的区别
  17. IT运维审计:新手入门之服务器运维操作要点
  18. java里SQL insert操作的语法_Java含个人总结语法:JDBC,学生表,实体类,集合,增删改查,注入,预处理【诗书画唱】...
  19. 51nod-生产口罩(拓补排序+DP)by zyz
  20. Aut(S3)=Inn(S3)的证明和元素寻找

热门文章

  1. 利用知名站点欺骗挂马
  2. RTT的线程同步篇——事件
  3. jsp中java代码if_jsp中jstl标签的类似 if - else 语句 的语法
  4. .net oracle 参数化,.NET参数化Oracle查询参数
  5. sts版本不同有影响吗_不同型号的手机充电器可以混用吗?会影响电池吗?
  6. PostgreSQL 12 的同步流复制搭建及主库hang问题处理与分析
  7. 最佳实践 | 腾讯HTAP数据库TBase助力某省核心IT架构升级
  8. 2019数据技术嘉年华·金融峰会6月28日落地深圳,参会的六大理由
  9. 不想业务被中断?快来解锁华为云RDS for MySQL新特性
  10. Go语言逆向技术:恢复函数名称算法