MyException - 我的异常网
当前位置:我的异常网» Oracle开发 » 怎么寫PROC去刪除文件

怎么寫PROC去刪除文件(3)

www.MyException.Cn  网友分享于:2013-02-20  浏览:14次

  fid IN utl_file.FILE_TYPE,
  absolute_offset IN PL_INTEGER DEFALUT NULL,
  relative_offset IN PL_INTEGER DEFALUT NULL);
如上所示,absolute_offset 用于指定文件的绝对位置,relative_offset 用于指定文件的相对位置(单位:字节),使用该过程的示例如下:
DECLARE
  HANDLE UTL_FILE.FILE_TYPE;
  BUFFER VARCHAR2(2000);
BEGIN
IF NOT UTL_FILE.is_open(HANDLE) THEN
  HANDLE := UTL_FILE.fopen('CZW','DYWT.TXT','R',1000);
END IF;
  DBMS_OUTPUT.PUT_LINE('起始位置'
------解决方案--------------------
'==>'
------解决方案--------------------
UTL_FILE.FGETPOS(HANDLE));
  UTL_FILE.fseek(HANDLE,5);
  DBMS_OUTPUT.PUT_LINE('现在位置'
------解决方案--------------------
'==>'
------解决方案--------------------
UTL_FILE.FGETPOS(HANDLE));
  UTL_FILE.FCLOSE(HANDLE);
END;

20、FREMOVE
该过程用于删除磁盘文件。语法如下:
UTL_FILE.FREMOVE(location IN VARCHAR2,filename IN VARCHAR2);
上面的location用于指定DIRECTORY,注意,这里也必须要大写,filename用于指定要删除的文件名,示例如下:
SQL> EXEC UTL_FILE.FREMOVE('CZW','NEW.TXT');
PL/SQL procedure successfully completed

21、FCOPY
该过程用于将源文件的全部或者部分内容复制到目标文件中。当使用该过程的时候,如果不设起始行和结束行,则将复制文件所有的内容。语法如下:
UTL_FILE.FCOPY(
  location IN VARCHAR2,
  filename IN VARCHAR2,
  dest_dir IN VARCHAR2,
  dest_file IN VARCHAR2,
  start_line IN PLS_INTEGER DEFAULT 1,
  end_line IN PLS_INTEGER DEFALUT NULL);
上面location用于指定源文件所在的DIRECTORY对象,filename用于指定具体的文件名字,dest_dir指定希望复制到的文件的directory对象,dest_file用于指定目标文件的名称,start_line用于指定起始行号,end_line用于指定结束行号。
下面是UTL_FILE.FCOPY的例子:
SQL> exec UTL_FILE.FCOPY('CZW','DYWT.TXT','CZW','CZW.TXT');
PL/SQL procedure successfully completed

22、FRENAME
该过程用于修改已经存在的文件名字,其作用于UNIX的MV命令完全相同,在修改文件名字的时候,通过指定overwrite参数可以覆盖已经存在的文件。语法如下:
UTL_FILE.FRENAME(
  location IN VARCHAR2,
  filename IN VARCHAR2,
  dest_dir IN VARCHAR2,
  dest_file IN VARCHAR2,
  overwrite IN BOOLEAN DEFAULT FALSE);
上面的,overwrite用于指定是否要覆盖已经存在的文件(false 不覆盖,true可以覆盖)例子如下:
SQL> exec UTL_FILE.FRENAME('CZW','CZW.TXT','CZW','HANJB.TXT')
PL/SQL procedure successfully completed

温习例子:
使用UTL_FILE包,按照一定的格式,导出数据库中某张表的数据:
使用具有DBA权限的用户创建DIRECTORY名为“CZW_DIR”
DECLARE
  HANDLE UTL_FILE.FILE_TYPE;
BEGIN
  HANDLE := UTL_FILE.FOPEN('CZW_DIR','DEPT.TXT','W',1000);
  FOR I IN (SELECT T.DEPTNO
------解决方案--------------------
','
------解决方案--------------------
T.DNAME
------解决方案--------------------
','
------解决方案--------------------
T.LOC AS MSG FROM SCOTT.DEPT T) LOOP
    UTL_FILE.PUT_LINE(HANDLE,I.MSG);
  END LOOP;
  UTL_FILE.FFLUSH(HANDLE);
  UTL_FILE.FCLOSE(HANDLE);
END;



------解决方案--------------------

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有