zoukankan      html  css  js  c++  java
  • PLSQL 操作 ORACLE 服务器上的文件

        在做oracle plsql 编程的时候,难免要对文件进行操作,如读取oracle服务器上的别的目录下的数据文件,导入到oracle库中;虽然在plsql developer工具中提供了debug功能,但当有输出时,debug的控制台不能及时看到,除非停止debug。如果在plsql程序中输出日志信息到文件中,使得plsql程序调试、运行跟中更加方便,因为大家都知道日志的作用是什么。

    下面讲讲怎么在oracleplsql程序中写入日志到oracle服务器的文件中。虽然我们是用plsql developer开发和运行plsql程序,但是plsql developer经常是安装在远程计算机上,这里说的操作文件,是指plsql操作oracle dbms所在的服务器上,如果oracle安装在linux系统,则是操作linux上的文件;安装在windows上,则是操作windows上的文件,对于本次演示前者会相对麻烦些,后者容易些。因为我用的oracle安装在linux上,所以以linux系统为例讲解。

    注:“--”表示注释行

     

     

     一、建立存放日志文件的目录。

     1.root权限登录linux系统。

     2.创建一个目录存放日志文件。

     # mkdir /home/oracle/plog

     3.进入/home/oracle/,赋予oracle用户对plog目录读写权限

     # chown oracle plog

     4.检验oracle用户是否对该目录有读写权限,切换到oracle用户下

     # su oracle $ cd plog $ touck plsql.log        

     -- 这里是创建一个文件的意思,如果没有权限,则创建失败并提示。

     -- 如果创建成功,则说明权限授权成功,我们可以把plsql.log删除

     $ rm plsql.log,这个随便。

     

     二、介绍plsql程序中操作文件,oracle提供 utl_file 包是专门用来操作磁盘上的文件。

     1.需要创建一个directory对象

     SQL>create or replace directory plog_dir as'/home/oracle/plog';  

     2.sys用户登录plsql developer,给运行plsql的程序用户授权对该目录可写、可读的权限;对 utl_file 有可执行的权限。

     SQL>grant read,write on directory plog_dir to scott;  

     SQL>GRANT EXECUTEON utl_file TO scott;--scott是登录oracle数据库的一个用户。

     3.编写一个写入日志的存储过程。 

    createorreplaceprocedure logger

    (

        v_file_name invarchar2,--存放日志文件名

        v_log_msg invarchar2--日志消息

    )

    is

        v_file_handle utl_file.file_type;--声明一个文件操作句柄   

    begin

        v_file_handle:=utl_file.fopen('PLOG_DIR',v_file_name,'a');--实例化一个句柄

        utl_file.put_line(v_file_handle,v_log_msg);--写入信息

        utl_file.fflush(v_file_handle);--把缓冲区的信息写入文件

        utl_file.fclose(v_file_handle);    --关闭文件句柄

    exception

     

        whenothersthen

            dbms_output.put_line('插入日志异常,错误代码是:'||sqlcode||'错误消息是:'||sqlerrm);

    end;

      注:1.'PLOG_DIR'directory,必须大写2.'a'是在日志文件后追加信息 

    三、在需要写入日志的地方调用该存储过程,就可以了。

      execute logger('wt.txt','this is a testing for plsql writer !');   

  • 相关阅读:
    ASP.NET MVC 重点教程一周年版 第二回 UrlRouting
    ASP.NET MVC 重点教程一周年版 第三回 Controller与View
    DynamicData for Asp.net Mvc留言本实例 下篇 更新
    Asp.net MVC视频教程 18 单选与复选框
    使用ASP.NET MVC Futures 中的异步Action
    ASP.NET MVC RC 升级要注意的几点
    ATL、MFC、WTL CString 的今生前世
    msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
    关于Windows内存的一些参考文章
    Windows访问令牌相关使用方法
  • 原文地址:https://www.cnblogs.com/quanweiru/p/3067075.html
Copyright © 2011-2022 走看看