开发者社区> jimbuster> 正文

(原创)oracle目录及Long类型操作

简介: --创建一个表 create table ascii_docs ( id number, document long ); --创建一个目录 create or replace directory OUT_PATH as 'c:\temp'; --给目录授予权限 grant rea...
+关注继续查看

--创建一个表
create table ascii_docs
(
id number,
document long
);
--创建一个目录

create or replace directory OUT_PATH as 'c:\temp';
--给目录授予权限

grant read, write on directory OUT_PATH to test;

create or replace function dump_doc(docid in number,filename in varchar2) return varchar2 is
  data_chunk varchar2(254);
  chunk_size number :=254;
  chunk_size_returned number;
  --set location to be the directory in which the file should go.
  location varchar2(20) := 'OUT_PATH';
  mycursor number;
  stmt varchar2(1024);
  cur_pos number :=0;
  rows number;
  dummy number;
  file_handle utl_file.file_type;
  status varchar2(50);
  begin
  --open the file for writing.
  file_handle := utl_file.fopen(location,filename,'w');
  --bind the doctoget host variable with the plsql parameter docid
  --whitch is passed into the function
  stmt := 'select document from ascii_docs where id = :doctoget';
  mycursor := dbms_sql.open_cursor;
  dbms_sql.parse(mycursor,stmt,dbms_sql.v7);
  dbms_sql.bind_variable(mycursor,':doctoget',docid);
  --only doing one fetch for the primary key as assuming the whole
  --document is stored in one row
  dbms_sql.define_column_long(mycursor,1);
  dummy := dbms_sql.execute(mycursor);
  rows := dbms_sql.fetch_rows(mycursor);
  loop
    --fetch 'chunks of the long until we have got the lot
    dbms_sql.column_value_long(mycursor,1,chunk_size,cur_pos,data_chunk,chunk_size_returned);
    utl_file.put(file_handle,data_chunk);
    cur_pos := cur_pos + chunk_size;
    exit when chunk_size_returned =0;
  end loop;
  dbms_sql.close_cursor(mycursor);
  utl_file.fclose(file_handle);
  return('success');
  exception
    when others then
      utl_file.fclose(file_handle);
      raise;
      return('Fallre');
  end dump_doc;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18413 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24957 0
在 Mybatis Plus 的单表操作中 in 的相关问题
之前写过一篇关于 in 与 not in 问题的文章(结合 Mybatis,探讨 Oracle 中 in 与 not in 的陷阱),现在在扩展一下,谈谈 Mybatis Plus 单表操作时 in(not in) 的相关问题。
3397 0
Redis进阶应用:Redis+Lua脚本实现复合操作
通过阅读本文将Redis+Lua有了一定的了解,并能使用脚本完成一些简单的复合操作。
4263 0
Restore Volume 操作 - 每天5分钟玩转 OpenStack(60)
前面我们 backup 了 voluem,今天我们将讨论如何 restore volume。 restore 的过程其实很简单,两步走: 在存储节点上创建一个空白 volume。 将 backup 的数据 copy 到空白 voluem 上。
683 0
Python 目录操作(转)
在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前目录('.
742 0
lua二进制操作函数
  由于 Lua 脚本语言本身不支持对数字的二进制操作(例如 与,或,非 等操作),MUSHclient 为此提供了一套专门用于二进制操作的函数,它们都定义在一个“bit”表中,使用时只要requre “bit”即可。
1107 0
+关注
jimbuster
从事数据库管理和运维
280
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载