- 浏览: 45415 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 2073逻辑备份工具----数据泵 使用专用的API导入导出数据,速度 ... -
Oracle常用调优手段
2014-04-04 17:46 0Oracle常用调优手段 Oracl ... -
数据批量导入Oracle数据库
2014-04-04 17:32 628今天学习了一个新的东西,觉得还挺有意思的,也是从别出COPY ... -
问题:ora-01658 :无法为表空间USERS 中的段创建INITIAL区
2014-04-04 16:08 2574--问题:ora-01658 :无法为表空间USERS 中的段 ... -
oracle对表空间 USERS 无权限
2014-04-04 15:56 1229权限赋予即可:alter user 用户名 quota unl ... -
正在检查网络配置需求
2014-03-30 13:41 777在安装oracle 10g时,在先行条件检测时会出现 ... -
表空间问题
2014-03-26 10:06 498表空间不足先查询MAXDATA表空间数据文件所在路径selec ... -
10个简单步骤,完全理解SQL 来自引用
2014-01-10 15:59 65110个简单步骤,完全理解SQL 1、 SQL 是一种声明式语言 ... -
Oracle查询表结构的一些相关语句
2013-04-16 16:57 889Oracle查询表结构的一些相关语句 select * fr ... -
liux环境下操作oracle
2013-04-16 16:23 6741.登录linux,以oracle用户登录(如果是root用户 ... -
查询表空间使用率
2012-07-20 18:59 884select b.file_name 物理文件名, b.tab ...
相关推荐
总结,使用Oracle存储过程导入XML文件数据涉及的关键步骤包括创建匹配的表结构、编写存储过程以解析XML并插入数据,以及调用存储过程执行导入。通过这种方式,可以高效地处理大量XML数据的导入工作,同时保持数据库...
本篇文章将深入探讨如何在Oracle存储过程中使用临时表,包括会话级临时表和事务级临时表。 ### 会话级临时表 会话级临时表(Session-Level Temporary Tables)只在创建它的会话内可见,并且在会话结束时自动删除。...
在描述中提到的“使用批处理进行oracle存储过程脚本的创建和更新的处理”,这可能意味着开发者使用批处理命令(如Windows的批处理文件`.bat`)来自动化执行创建或更新Oracle存储过程的任务。批处理文件可以包含一...
本文将深入探讨如何在Spring Boot项目中整合MyBatis,实现调用Oracle存储过程并处理游标返回的数据。 首先,我们需要在Spring Boot项目中引入相关的依赖。在`pom.xml`文件中添加Oracle JDBC驱动(ojdbc66-oracle...
本话题将详细探讨如何在Oracle存储过程中调用外部的批处理脚本,如Windows系统的BAT文件,以实现数据库操作与系统命令的集成。 首先,`Oracle存储过程`是一种预编译的SQL和PL/SQL代码集合,可以被多次调用以执行...
在实际的业务场景中,有时我们需要调用数据库中的存储过程来获取或处理数据,本篇将详细介绍如何在润乾报表中调用Oracle存储过程。 首先,我们要在Oracle数据库中创建存储过程。以下是一个简单的存储过程示例,名为...
在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用Oracle存储过程是一个常见的需求,这不仅能够提升代码的执行效率,还能增强应用程序的安全性。本文将深入解析ibatis如何与Oracle数据库中的存储过程进行...
总结,通过Java调用Oracle存储过程,我们需要配置JDBC驱动,建立数据库连接,创建CallableStatement,设置参数,执行存储过程,并处理返回的结果。在这个例子中,我们展示了如何调用一个简单的存储过程并打印返回的...
总结来说,本示例展示了如何在Oracle存储过程中定义和使用结构化数组,以及如何在Java中调用这些存储过程并解析返回的多行多列数据。通过这种方式,你可以高效地处理复杂的数据结构,同时利用Java的灵活性来处理这些...
Oracle存储过程是一组预编译的SQL语句,可以在数据库服务器端执行,提供更好的性能和安全性。 1. **无返回值的存储过程**: 当存储过程不返回任何结果时,我们只需在MyBatis的Mapper接口中定义一个无返回值的方法...
根据给定的部分内容,我们可以看到一个名为`DBToXml`的存储过程被创建用于将Oracle数据库中的数据转换为XML文件,并保存到指定目录下。该存储过程接受三个参数:SQL查询语句(`strSQL`)、目标目录路径(`dir`)和...
总结来说,这个入门实例涵盖了使用Java通过JDBC调用Oracle存储过程进行CRUD操作的基本流程,以及利用DOM4J解析XML配置文件和`ThreadLocal`管理数据库连接的方法。这样的设计使得程序更加模块化,易于维护,同时也...
3. 结果:执行后,存储过程会在A0表中创建或更新记录,这些记录包含生成的Java实体类和`.hbm.xml`映射文件的内容。由于A0是一个文本文件,可能需要额外的步骤来提取和处理这些数据,比如使用脚本将内容导出到实际的...
### 在Oracle XML DB中存储XML的关键知识点 #### 1. Oracle XML DB简介 - **Oracle XML DB** 是Oracle Database的一部分,旨在提供一个高效且灵活的方式来管理和查询XML文档。 - Oracle XML DB不仅支持XML文档的...
例如,你可以创建一个过程,遍历表数据,使用XMLElement生成每个记录的XML元素,最后组合成完整的XML文档。 4. **XSLT转换**:如果需要根据特定样式生成XML,可以结合使用XSL(可扩展样式表语言)和XSLT(XSL转换)...
本文将详细介绍如何在SSM项目中调用Oracle存储过程,这对于提升应用程序性能和简化复杂操作具有重要意义。 首先,让我们了解一下SSM框架。SSM是由Spring框架、SpringMVC和MyBatis三个组件组成的轻量级Java Web开发...
Oracle存储过程是数据库管理系统Oracle中实现复杂业务逻辑的重要工具,它可以封装一系列SQL语句和PL/SQL代码,形成可重复使用的程序单元。在处理大量数据时,为了提高性能和用户体验,通常会采用分页查询的方式来...
4. XML索引:为了提高处理XML数据的速度,SQL Server和Oracle等数据库系统支持创建XML索引,可以针对XML文档的特定部分进行快速查找。 5. 动态XML:存储过程可以生成动态的XML字符串,这在需要根据运行时条件生成...
Oracle Report XML开发是一种在Oracle BI Publisher(Business Intelligence Publisher)中创建和设计报表的方法,它利用XML数据源来生成各种格式的输出,如PDF、Excel、HTML等。Oracle BI Publisher是Oracle的一款...