- 浏览: 43264 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (48)
- javaee (3)
- sql (11)
- oralce (11)
- sqlServer (5)
- j2me (0)
- 软件工程 (0)
- 设计模式 (1)
- 服务器 (4)
- web (9)
- ejb3.0 (0)
- spring (1)
- hibernate (0)
- struts2.0 (0)
- 生活 (0)
- c\c++ (0)
- c# (0)
- asp.net (0)
- SOA (0)
- 行业知识 (0)
- 软件测试 (0)
- freemarker (0)
- 数据库 (5)
- 表空间 (1)
- java (2)
- HTML <fieldset> 标签 (1)
- SSH启动tomcat步骤 (1)
- 网络操作问题 (0)
- andriod (7)
- ios (2)
- 证劵知识 (0)
- 新学习的东西 (0)
- 项目管理 (0)
- 创业 (0)
- 成长历程 (0)
- mysql (2)
- 项目管理工具 (0)
- 开发网页漏洞修复 (0)
- 服务器集群 (1)
- 系统集成 (0)
- html5 ipad (1)
- html5 (2)
- html (4)
- jquery (3)
- 常用网站 (1)
- liux (4)
- redis (1)
- jetty (1)
- myibatis (2)
- mac ios (1)
- 操作系统 (1)
- 项目仓库管理 (1)
- 小程序 (1)
- 微信 (1)
- vue (1)
- spring boot (1)
最新评论
我整理了一个方法
1.创建如下存储过程,注意将其中location =>'d:\work'之中的目录改为你本机的某个目录.
create or replace procedure getXML(newContext_qry varchar2,rowSettag varchar2,rowTag varchar2,filename varchar2) is
-- Input query string
-- Input rowsetTag , the root tag
-- Input row level tag
-- Input file name
-- Note make sure that before running this procedure, it is required that UTL_FILE_DIR must
-- be set in init.ora file In this code it has been set to d:\work.
begin
declare
qryCtx dbms_xmlgen.ctxHandle ;
result clob;
lob_length integer;
read_amount integer;
read_offset integer;
buffer varchar2(100);
loc varchar2(100) := 'usr_dir';
f_hand utl_file.file_type;
Begin
-- Setting up offset and no. of chars to be read in
-- in one go from clob datatype.
read_offset := 1;
read_amount := 75;
dbms_output.put_line('opening');
--Opening file
f_hand := Utl_File.Fopen(location =>'d:\work',
filename =>filename,
open_mode =>'w',
max_linesize => 32767);
dbms_output.put_line('file open');
-- Creating new context
qryCtx := dbms_xmlgen.newContext(newContext_qry);
-- Defining Rowsettag
DBMS_XMLGEN.setRowSetTag(qryCtx,rowSettag);
-- Defining Rowtag
DBMS_XMLGEN.setRowTag(qryCtx,rowTag);
-- Generating XML and storing in an clob datatype
result :=DBMS_XMLGEN.getXML(qryCtx);
dbms_output.put_line('xml generated');
-- Getting the length of the data stored in Clob
lob_length := dbms_lob.getlength(result);
-- Reading data from clob variable and writng into file.
while (lob_length > 0) loop
dbms_lob.read(result,read_amount,read_offset,buffer);
dbms_output.put_line('writing in file');
utl_file.put(f_hand,buffer);
dbms_output.put_line('written');
read_offset := read_offset+read_amount;
lob_length := lob_length-read_amount;
if lob_length < read_amount then
read_amount := lob_length;
end if;
end loop;
utl_file.fclose(f_hand);
EXCEPTION WHEN UTL_FILE.INVALID_PATH THEN
RAISE_APPLICATION_ERROR(-20100,'Invalid Path');
WHEN UTL_FILE.INVALID_MODE THEN
RAISE_APPLICATION_ERROR(-20101,'Invalid Mode');
WHEN UTL_FILE.INVALID_OPERATION then
RAISE_APPLICATION_ERROR(-20102,'Invalid Operation');
WHEN UTL_FILE.INVALID_FILEHANDLE then
RAISE_APPLICATION_ERROR(-20103,'Invalid Filehandle');
WHEN UTL_FILE.WRITE_ERROR then
RAISE_APPLICATION_ERROR(-20104,'Write Error');
WHEN UTL_FILE.READ_ERROR then
RAISE_APPLICATION_ERROR(-20105,'Read Error');
WHEN UTL_FILE.INTERNAL_ERROR then
RAISE_APPLICATION_ERROR(-20106,'Internal Error');
WHEN OTHERS THEN
UTL_FILE.FCLOSE(f_hand);
end;
end;
/
2.修改init.ora参数文件中的参数utl_file_dir,将其值指定为和存储过程中location指定的目录,如D:\work,重新启动数据库。
3.登录后,执行类似如下语句
execute getXML('select * from tab','TAB','RECORD','shanfei.xml')
参数1:SQL语句
参数2:XML文件中将生成的根元素
参数3:XML文件中表格每行代表的元素
参数4:生成的xml文件名称
生成xml文件内容类似如下:
<?xml version="1.0"?>
<tab>
<record>
<TNAME>ACCOUNTINFO</TNAME>
<TABTYPE>VIEW</TABTYPE>
</record>
<record>
<TNAME>ACCOUNTSTATUS</TNAME>
<TABTYPE>VIEW</TABTYPE>
</record>
1.创建如下存储过程,注意将其中location =>'d:\work'之中的目录改为你本机的某个目录.
create or replace procedure getXML(newContext_qry varchar2,rowSettag varchar2,rowTag varchar2,filename varchar2) is
-- Input query string
-- Input rowsetTag , the root tag
-- Input row level tag
-- Input file name
-- Note make sure that before running this procedure, it is required that UTL_FILE_DIR must
-- be set in init.ora file In this code it has been set to d:\work.
begin
declare
qryCtx dbms_xmlgen.ctxHandle ;
result clob;
lob_length integer;
read_amount integer;
read_offset integer;
buffer varchar2(100);
loc varchar2(100) := 'usr_dir';
f_hand utl_file.file_type;
Begin
-- Setting up offset and no. of chars to be read in
-- in one go from clob datatype.
read_offset := 1;
read_amount := 75;
dbms_output.put_line('opening');
--Opening file
f_hand := Utl_File.Fopen(location =>'d:\work',
filename =>filename,
open_mode =>'w',
max_linesize => 32767);
dbms_output.put_line('file open');
-- Creating new context
qryCtx := dbms_xmlgen.newContext(newContext_qry);
-- Defining Rowsettag
DBMS_XMLGEN.setRowSetTag(qryCtx,rowSettag);
-- Defining Rowtag
DBMS_XMLGEN.setRowTag(qryCtx,rowTag);
-- Generating XML and storing in an clob datatype
result :=DBMS_XMLGEN.getXML(qryCtx);
dbms_output.put_line('xml generated');
-- Getting the length of the data stored in Clob
lob_length := dbms_lob.getlength(result);
-- Reading data from clob variable and writng into file.
while (lob_length > 0) loop
dbms_lob.read(result,read_amount,read_offset,buffer);
dbms_output.put_line('writing in file');
utl_file.put(f_hand,buffer);
dbms_output.put_line('written');
read_offset := read_offset+read_amount;
lob_length := lob_length-read_amount;
if lob_length < read_amount then
read_amount := lob_length;
end if;
end loop;
utl_file.fclose(f_hand);
EXCEPTION WHEN UTL_FILE.INVALID_PATH THEN
RAISE_APPLICATION_ERROR(-20100,'Invalid Path');
WHEN UTL_FILE.INVALID_MODE THEN
RAISE_APPLICATION_ERROR(-20101,'Invalid Mode');
WHEN UTL_FILE.INVALID_OPERATION then
RAISE_APPLICATION_ERROR(-20102,'Invalid Operation');
WHEN UTL_FILE.INVALID_FILEHANDLE then
RAISE_APPLICATION_ERROR(-20103,'Invalid Filehandle');
WHEN UTL_FILE.WRITE_ERROR then
RAISE_APPLICATION_ERROR(-20104,'Write Error');
WHEN UTL_FILE.READ_ERROR then
RAISE_APPLICATION_ERROR(-20105,'Read Error');
WHEN UTL_FILE.INTERNAL_ERROR then
RAISE_APPLICATION_ERROR(-20106,'Internal Error');
WHEN OTHERS THEN
UTL_FILE.FCLOSE(f_hand);
end;
end;
/
2.修改init.ora参数文件中的参数utl_file_dir,将其值指定为和存储过程中location指定的目录,如D:\work,重新启动数据库。
3.登录后,执行类似如下语句
execute getXML('select * from tab','TAB','RECORD','shanfei.xml')
参数1:SQL语句
参数2:XML文件中将生成的根元素
参数3:XML文件中表格每行代表的元素
参数4:生成的xml文件名称
生成xml文件内容类似如下:
<?xml version="1.0"?>
<tab>
<record>
<TNAME>ACCOUNTINFO</TNAME>
<TABTYPE>VIEW</TABTYPE>
</record>
<record>
<TNAME>ACCOUNTSTATUS</TNAME>
<TABTYPE>VIEW</TABTYPE>
</record>
发表评论
-
oracle数据泵的学习
2014-05-16 13:04 1944逻辑备份工具----数据泵 使用专用的API导入导出数据,速度 ... -
Oracle常用调优手段
2014-04-04 17:46 0Oracle常用调优手段 Oracl ... -
数据批量导入Oracle数据库
2014-04-04 17:32 577今天学习了一个新的东西,觉得还挺有意思的,也是从别出COPY ... -
问题:ora-01658 :无法为表空间USERS 中的段创建INITIAL区
2014-04-04 16:08 2532--问题:ora-01658 :无法为表空间USERS 中的段 ... -
oracle对表空间 USERS 无权限
2014-04-04 15:56 1193权限赋予即可:alter user 用户名 quota unl ... -
正在检查网络配置需求
2014-03-30 13:41 735在安装oracle 10g时,在先行条件检测时会出现 ... -
表空间问题
2014-03-26 10:06 462表空间不足先查询MAXDATA表空间数据文件所在路径selec ... -
10个简单步骤,完全理解SQL 来自引用
2014-01-10 15:59 62410个简单步骤,完全理解SQL 1、 SQL 是一种声明式语言 ... -
Oracle查询表结构的一些相关语句
2013-04-16 16:57 847Oracle查询表结构的一些相关语句 select * fr ... -
liux环境下操作oracle
2013-04-16 16:23 6401.登录linux,以oracle用户登录(如果是root用户 ... -
查询表空间使用率
2012-07-20 18:59 837select b.file_name 物理文件名, b.tab ...
相关推荐
pb中执行oracle存储过程脚本; 使用批处理进行oracle存储过程脚本的创建和更新的处理。 此程序在pb中进行实现;
Oracle自动生成hibernate实体 首先需要有个表A0,然后以要生成实体的表名称为参数执行存储过程,生成的结果就在A0表里。
本例是我工作中的一些实操例子,亦是我工作日志,记录在此,既可作为我自己的总结,也可以此分享给同行借鉴。...2.创建oracle存储过程脚本 3.JDBC调用存储过程语句 4.创建Groovy脚本 5.xml入参示例 6.json出参示例
使用C#对oracle建立的存储过程进行封装,封装格式为XML,本源码为医院系统实际运行源码
2.1 存储XML数据到XML表中 2.1.1创建一个有XMLType类型字段的表: create table xmlcontent (keyvalue varchar2(10) primary key, xmlvalue xmltype); 2.1.2创建一个XMLType类型表 create table xmltable of ...
创建sqlserver存储过程给第三方公司调用获取对应检查报告记录的需求,如果是oracle数据库的话,其实也可以参考oracle的语法将本文转换下,因为本文的原生脚本就是来自于oracle,读者略微研究下就明白,语法大同小异...
Oracle笔记 十、PL/SQL存储过程 Oracle笔记 十一、PL/SQL函数和触发器 Oracle笔记 十二、PL/SQL 面向对象oop编程 Oracle笔记 十三、PL/SQL面向对象之package Oracle笔记 十四、查询XML操作、操作系统文件
Oracle笔记 十、PL/SQL存储过程 Oracle笔记 十一、PL/SQL函数和触发器 Oracle笔记 十二、PL/SQL 面向对象oop编程 Oracle笔记 十三、PL/SQL面向对象之package Oracle笔记 十四、查询XML操作、操作系统文件
第39章 Java存储过程 第40章 Oracle真正应用群集 第41章 网格体系结构和管理 第Ⅷ部分 指南 第42章 Oracle数据字典指南 第43章 调整应用程序和SQL旅行者指南 第44章 调整中的案例分析 第45章 Oracle Application ...
1.楼主所在公司有个业务需求是需要访问地方医保局发布的一个DRGs查询SOAP接口,POST入参,同时获取接口返回数据。...三、创建访问soap/http接口,并解析xml的存储过程 四、响应报文用例,可用于调试管道函数
该应用程序本身也简单演示了如何利用XML,HTML和AJAX创建应用程序,该应用程序利用Oracle XML DB HTTP服务器和Oracle XML DB的数据库本机Web服务功能。 它还提供了一个现场演示工具,该工具允许在浏览器中运行...
oracle,MySql ,代码差异高亮显示 具体功能 介绍博客有图片 :https://blog.csdn.net/wwja_chen/article/details/89336728 如开发库和正式库之间的结构和数据同步,此工具可以告诉您哪个表结构有字段的增加减少,存储...
asp.net_spring_nhibernate_oracle 网上关于在.net开发的例子不多,这个例子能跑,遗憾的是,nhibernate在存储过程不完美,在oracle 传回多结果集,只能接受到第一个,官网上也是这样说的。 提示:开发前,先将...
压缩包中包含的文件:数据库建表、存储过程(生成指定格式的字符串,供后台服务写文件)、数据同步的后台服务,三个文件; 希望对刚好有这需求的人有帮助,同时也欢迎指正程序中的不足,共同进步。
第ⅰ部分 关键的数据库概念 第1章 oracle database 11g 体系结构 第2章 安装oracle database 11g 和创建数据库 第3章 升级到oracle ... 第52章 oracle 中的xml 指南 第ⅷ部分 附 录 附录a 命令和术语参考
XML 生成 XML 存储 对象关系技术的 JDeveloper 支持 Oracle Business Components for Java Container Managed Persistence 使用 Oracle9i 对象 映射 Oracle 对象类型至 CMP 字段 JPublisher 向导 部署面向对象应用...
XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单...
第2章介绍了Oracle的XML开发包(XML Developer's Kit,XDK)组件,回顾了Java/C/C++/ PLSQL等语言的XML解析器及XSLT处理程序、Java/C++语言的类生成器、以及Java TransViewer组件。用于访问及处理XML/XSL文件的可工作...
第52章 Oracle中的XML指南 第Ⅷ部分 附录 附录A 命令和术语参考 作者介绍 Kevin Loney是Oracle数据库设计、开发、管理和调整方面的国际知名专家。作为金融界的一名企业数据库架构师,2002年他被Oracle Magazine...