- 浏览: 565410 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- 随笔 (4)
- Spring (13)
- Java (61)
- HTTP (3)
- Windows (1)
- CI(Continuous Integration) (3)
- Dozer (1)
- Apache (11)
- DB (7)
- Architecture (41)
- Design Patterns (11)
- Test (5)
- Agile (1)
- ORM (3)
- PMP (2)
- ESB (2)
- Maven (5)
- IDE (1)
- Camel (1)
- Webservice (3)
- MySQL (6)
- CentOS (14)
- Linux (19)
- BI (3)
- RPC (2)
- Cluster (9)
- NoSQL (7)
- Oracle (25)
- Loadbalance (7)
- Web (5)
- tomcat (1)
- freemarker (1)
- 制造 (0)
最新评论
-
panamera:
如果设置了连接需要密码,Dynamic Broker-Clus ...
ActiveMQ 集群配置 -
panamera:
请问你的最后一种模式Broker-C节点是不是应该也要修改持久 ...
ActiveMQ 集群配置 -
maosheng:
longshao_feng 写道楼主使用 文件共享 模式的ma ...
ActiveMQ 集群配置 -
longshao_feng:
楼主使用 文件共享 模式的master-slave,produ ...
ActiveMQ 集群配置 -
tanglanwen:
感触很深,必定谨记!
少走弯路的十条忠告
create or replace
PROCEDURE PR_FINANCE_PRODUCT_PARSE
(
v_filename IN VARCHAR2, --解析文件名称
v_retvalue OUT NUMBER --1为成功,0为失败
)
AS
--文件句柄
filehandle utl_file.file_type;
--缓冲区
filebuffer varchar2(255);
--文件名
lv_filename varchar2(100);
--文件到表字段的映射
lv_product_number varchar2(255);
lv_product_name varchar2(255);
lv_min_capital varchar2(255);
lv_max_capital varchar2(255);
lv_interest_rate varchar2(255);
lv_begin_time varchar2(255);
lv_end_time varchar2(255);
lv_time_limit varchar2(255);
lv_product_status varchar2(255);
--列指针
lv_i number;
--字符串定位解析指针
lv_sposition1 number;
lv_sposition2 number;
lv_sposition3 number;
lv_sposition4 number;
lv_sposition5 number;
lv_sposition6 number;
lv_sposition7 number;
lv_sposition8 number;
--声明异常
invalid_data_format exception;
BEGIN
if v_filename is null then
lv_filename:='finance_product_'|| to_char(sysdate,'YYYYMMDD') ||'.txt' ;
else
lv_filename := v_filename;
end if;
--打开一个文件句柄 ,同时fopen的第一个参数必须是大写
filehandle := utl_file.fopen('FINANCE_PRODUCT_DIR',lv_filename,'r');
--if UTL_FILE.IS_OPEN(filehandle) then
-- EXECUTE IMMEDIATE 'truncate table T_FINANCING_PRODUCT';
--end if;
Loop
begin
--将文件信息读取到缓冲区filebuffer中,每次读取一行
utl_file.get_line(filehandle,filebuffer);
dbms_output.put_line(filebuffer);
filebuffer:=CONVERT(filebuffer,'UTF8','ZHS16GBK'); --转化汉字,处理乱码
--数据文件一行字符串中数据分割符'|'的位置
lv_sposition1 := instr(filebuffer, '|', 1,1);
lv_sposition2 := instr(filebuffer, '|', 1,2);
lv_sposition3 := instr(filebuffer, '|', 1,3);
lv_sposition4 := instr(filebuffer, '|', 1,4);
lv_sposition5 := instr(filebuffer, '|', 1,5);
lv_sposition6 := instr(filebuffer, '|', 1,6);
lv_sposition7 := instr(filebuffer, '|', 1,7);
lv_sposition8 := instr(filebuffer, '|', 1,8);
--字符串解析正常情况
if lv_sposition1 <>0 then
lv_product_number := substr(filebuffer, 0, lv_sposition1-1); --第一列
else
raise invalid_data_format;
end if;
if lv_sposition2 <> 0 then
lv_product_name := substr(filebuffer, lv_sposition1+1, lv_sposition2-lv_sposition1-1);
--CONVERT(substr(filebuffer, lv_sposition1+1, lv_sposition2-lv_sposition1-1),'AL32UTF8','ZHS16GBK'); --第二列
else
raise invalid_data_format;
end if;
if lv_sposition3 <> 0 then
lv_min_capital := substr(filebuffer, lv_sposition2+1, lv_sposition3-lv_sposition2-1); --第三列
else
raise invalid_data_format;
end if;
if lv_sposition4 <> 0 then
lv_max_capital := substr(filebuffer, lv_sposition3+1, lv_sposition4-lv_sposition3-1); --第四列
else
raise invalid_data_format;
end if;
if lv_sposition5 <> 0 then
lv_interest_rate := substr(filebuffer, lv_sposition4+1, lv_sposition5-lv_sposition4-1); --第五列
else
raise invalid_data_format;
end if;
if lv_sposition6 <> 0 then
lv_begin_time := substr(filebuffer, lv_sposition5+1, lv_sposition6-lv_sposition5-1); --第六列
else
raise invalid_data_format;
end if;
if lv_sposition7 <> 0 then
lv_end_time := substr(filebuffer, lv_sposition6+1, lv_sposition7-lv_sposition6-1); --第七列
else
raise invalid_data_format;
end if;
if lv_sposition8 <> 0 then
lv_time_limit := substr(filebuffer, lv_sposition7+1, lv_sposition8-lv_sposition7-1); --第八列
lv_product_status := substr(filebuffer, lv_sposition8+1); --第九列
else
raise invalid_data_format;
end if;
--每列循环完后将信息保存到表中
dbms_output.put_line('insert data into table');
insert into T_FINANCING_PRODUCT
(
PRODUCT_NUMBER,
PRODUCT_NAME,
MIN_CAPITAL,
MAX_CAPITAL,
INTEREST_RATE,
BEGIN_TIME,
END_TIME,
TIME_LIMIT,
PRODUCT_STATUS
)
values
(
lv_product_number,
lv_product_name,
lv_min_capital,
lv_max_capital,
lv_interest_rate,
lv_begin_time,
lv_end_time,
lv_time_limit,
lv_product_status
);
exception
WHEN no_data_found THEN
exit ;
end;
End Loop;
delete from T_FINANCING_PRODUCT where to_char(OPERATION_DATE,'YYYYMMDD')=to_char(sysdate-1,'YYYYMMDD');
commit;
--关闭句柄
utl_file.fclose(filehandle);
v_retvalue :=1;
EXCEPTION
WHEN invalid_data_format THEN
v_retvalue :=0;
rollback;
dbms_output.put_line('invalid_data_format exception');
when others then
v_retvalue :=0;
rollback;
dbms_output.put_line('Othre exception,error code='||sqlcode||',error msg='||sqlerrm);
END PR_FINANCE_PRODUCT_PARSE;
PROCEDURE PR_FINANCE_PRODUCT_PARSE
(
v_filename IN VARCHAR2, --解析文件名称
v_retvalue OUT NUMBER --1为成功,0为失败
)
AS
--文件句柄
filehandle utl_file.file_type;
--缓冲区
filebuffer varchar2(255);
--文件名
lv_filename varchar2(100);
--文件到表字段的映射
lv_product_number varchar2(255);
lv_product_name varchar2(255);
lv_min_capital varchar2(255);
lv_max_capital varchar2(255);
lv_interest_rate varchar2(255);
lv_begin_time varchar2(255);
lv_end_time varchar2(255);
lv_time_limit varchar2(255);
lv_product_status varchar2(255);
--列指针
lv_i number;
--字符串定位解析指针
lv_sposition1 number;
lv_sposition2 number;
lv_sposition3 number;
lv_sposition4 number;
lv_sposition5 number;
lv_sposition6 number;
lv_sposition7 number;
lv_sposition8 number;
--声明异常
invalid_data_format exception;
BEGIN
if v_filename is null then
lv_filename:='finance_product_'|| to_char(sysdate,'YYYYMMDD') ||'.txt' ;
else
lv_filename := v_filename;
end if;
--打开一个文件句柄 ,同时fopen的第一个参数必须是大写
filehandle := utl_file.fopen('FINANCE_PRODUCT_DIR',lv_filename,'r');
--if UTL_FILE.IS_OPEN(filehandle) then
-- EXECUTE IMMEDIATE 'truncate table T_FINANCING_PRODUCT';
--end if;
Loop
begin
--将文件信息读取到缓冲区filebuffer中,每次读取一行
utl_file.get_line(filehandle,filebuffer);
dbms_output.put_line(filebuffer);
filebuffer:=CONVERT(filebuffer,'UTF8','ZHS16GBK'); --转化汉字,处理乱码
--数据文件一行字符串中数据分割符'|'的位置
lv_sposition1 := instr(filebuffer, '|', 1,1);
lv_sposition2 := instr(filebuffer, '|', 1,2);
lv_sposition3 := instr(filebuffer, '|', 1,3);
lv_sposition4 := instr(filebuffer, '|', 1,4);
lv_sposition5 := instr(filebuffer, '|', 1,5);
lv_sposition6 := instr(filebuffer, '|', 1,6);
lv_sposition7 := instr(filebuffer, '|', 1,7);
lv_sposition8 := instr(filebuffer, '|', 1,8);
--字符串解析正常情况
if lv_sposition1 <>0 then
lv_product_number := substr(filebuffer, 0, lv_sposition1-1); --第一列
else
raise invalid_data_format;
end if;
if lv_sposition2 <> 0 then
lv_product_name := substr(filebuffer, lv_sposition1+1, lv_sposition2-lv_sposition1-1);
--CONVERT(substr(filebuffer, lv_sposition1+1, lv_sposition2-lv_sposition1-1),'AL32UTF8','ZHS16GBK'); --第二列
else
raise invalid_data_format;
end if;
if lv_sposition3 <> 0 then
lv_min_capital := substr(filebuffer, lv_sposition2+1, lv_sposition3-lv_sposition2-1); --第三列
else
raise invalid_data_format;
end if;
if lv_sposition4 <> 0 then
lv_max_capital := substr(filebuffer, lv_sposition3+1, lv_sposition4-lv_sposition3-1); --第四列
else
raise invalid_data_format;
end if;
if lv_sposition5 <> 0 then
lv_interest_rate := substr(filebuffer, lv_sposition4+1, lv_sposition5-lv_sposition4-1); --第五列
else
raise invalid_data_format;
end if;
if lv_sposition6 <> 0 then
lv_begin_time := substr(filebuffer, lv_sposition5+1, lv_sposition6-lv_sposition5-1); --第六列
else
raise invalid_data_format;
end if;
if lv_sposition7 <> 0 then
lv_end_time := substr(filebuffer, lv_sposition6+1, lv_sposition7-lv_sposition6-1); --第七列
else
raise invalid_data_format;
end if;
if lv_sposition8 <> 0 then
lv_time_limit := substr(filebuffer, lv_sposition7+1, lv_sposition8-lv_sposition7-1); --第八列
lv_product_status := substr(filebuffer, lv_sposition8+1); --第九列
else
raise invalid_data_format;
end if;
--每列循环完后将信息保存到表中
dbms_output.put_line('insert data into table');
insert into T_FINANCING_PRODUCT
(
PRODUCT_NUMBER,
PRODUCT_NAME,
MIN_CAPITAL,
MAX_CAPITAL,
INTEREST_RATE,
BEGIN_TIME,
END_TIME,
TIME_LIMIT,
PRODUCT_STATUS
)
values
(
lv_product_number,
lv_product_name,
lv_min_capital,
lv_max_capital,
lv_interest_rate,
lv_begin_time,
lv_end_time,
lv_time_limit,
lv_product_status
);
exception
WHEN no_data_found THEN
exit ;
end;
End Loop;
delete from T_FINANCING_PRODUCT where to_char(OPERATION_DATE,'YYYYMMDD')=to_char(sysdate-1,'YYYYMMDD');
commit;
--关闭句柄
utl_file.fclose(filehandle);
v_retvalue :=1;
EXCEPTION
WHEN invalid_data_format THEN
v_retvalue :=0;
rollback;
dbms_output.put_line('invalid_data_format exception');
when others then
v_retvalue :=0;
rollback;
dbms_output.put_line('Othre exception,error code='||sqlcode||',error msg='||sqlerrm);
END PR_FINANCE_PRODUCT_PARSE;
发表评论
-
Oracle的三种高可用集群方案
2015-05-18 15:14 9741. RAC(Real Application Cluster ... -
Oracle 执行计划介绍
2013-08-09 15:22 960优化定义: 是选择最有效的执行计划来执行SQL语句的过 ... -
Oracle 优化器介绍
2013-08-08 17:51 7582种类型的优化器:基于规则的优化器与基于代价的优化器。 基于 ... -
Oracle SQL 语句的处理过程详解
2013-08-08 17:24 1069SQL语句: 1 数据查询语言DQL:select查询语句 ... -
Oracle SQL性能优化深入浅出 3
2013-08-08 16:29 859用EXPLAIN PLAN 分析SQL语句 ... -
Oracle 索引介绍
2013-08-07 15:26 969Oracle 创建索引要做到三 ... -
Oracle普通视图和实体化视图比较
2013-07-29 15:54 8839相对于普通的视图来说,实体化视图的不同之处在于实体化视图管理存 ... -
Oracle 实体化视图
2013-07-29 14:28 1748简介: MView中文名称为 ... -
Oracle Read-only Tablespace(只读表空间)
2013-07-25 15:31 3253一,只读表空间与数据的备份/恢复 表空间设置成只读之后,只需 ... -
Oracle Alter 语句
2013-03-28 14:40 1063oracle怎样修改表名、列名、字段类型、添加表列、删除表列: ... -
Oracle SQL性能优化总结
2013-03-22 11:21 1066Oracle数据库技术的两大基石是:索引和表连接 1.能不写 ... -
Oracle SQL 分析工具
2013-02-22 15:09 1081用EXPLAIN PLAN 分析SQL语句: EXPLAIN ... -
Oracle SQL性能优化深入浅出 0
2013-02-22 14:38 804随着软件技术的不断发展,系统性能越来越重要。 系统性能主要用 ... -
Oracle 数据库介绍
2013-02-20 17:43 1868概要: 1、 ORACLE ... -
Oracle Tkprof(Trace Kernel Profile)工具
2013-02-20 13:37 1399TKPROF介绍 Tkprof:分析ORACLE跟踪文件并且 ... -
Oracle分区技术介绍
2013-03-25 14:09 1021Oracle的分区技术基本原理 分而治之: Oracle分区表 ... -
Oracle SQL性能优化深入浅出 2
2013-01-25 10:47 968SQL 语句的编写原则: 1. ... -
Oracle SQL性能优化深入浅出 1
2013-01-25 09:53 1230ORACLE将执行过的SQL语句存放在内存的共享池(share ... -
Oracle 触发器详解 5
2012-12-21 09:20 10268.6 数据库触发器的应用实例 用户可以使用数据库触发器实 ... -
Oracle 触发器详解 4
2012-12-21 09:17 9798.5 数据库触发器的应用举例 例1:创建一个DML语句 ...
相关推荐
Oracle存储过程unwrap解密工具主要用于处理Oracle数据库中的加密存储过程。在Oracle数据库系统中,为了保护敏感代码或数据,开发人员有时会选择对存储过程进行加密。然而,当需要查看、调试或恢复这些加密的存储过程...
ORACLE 存储过程的异步调用 本文讨论了 ORACLE 存储过程的异步调用方法,旨在解决客户端长时间等待存储过程执行的问题。主要思路是使用 DBMS_JOB 包将主处理存储过程作为任务提交到任务队列中,并通过 DBMS_PIPE 包...
### Oracle存储过程加密知识点 #### 一、Oracle存储过程与加密背景 在Oracle数据库中,存储过程是一种数据库对象,它可以包含一系列SQL语句和过程化SQL代码,用于执行复杂的业务逻辑。存储过程不仅可以提高应用...
Oracle 存储过程中任务和管道的应用 Oracle 存储过程中任务和管道的应用是指在 Oracle 数据库中使用任务和管道来异步调用存储过程的方法。这种方法可以解决客户端调用存储过程后长时间没有反应的问题,并且可以实时...
通过这种方式,Oracle存储过程可以轻松地将数据库中的数据导出到文件,或者将文件中的数据导入到数据库中,为数据交换提供了便利。 总之,Oracle的存储过程结合UTL_FILE包,能够实现对文件系统的直接操作,增强了...
压缩包内的文件很可能是源代码、编译后的可执行文件、配置文件或者是测试用例,用于演示如何通过VC++调用Oracle存储过程。可能包括数据库连接代码、存储过程调用的示例以及数据处理逻辑。分析这些文件可以进一步了解...
在IT领域,尤其是在数据库管理与开发中,Oracle存储过程是一种常用的技术手段,用于实现复杂的业务逻辑、数据处理和批量操作。根据给定的文件信息,本文将深入探讨Oracle存储过程如何用于批量创建用户,以及如何读取...
Oracle存储过程不仅包括SQL语句,还可以包含PL/SQL(Oracle的编程语言)块,如条件判断、循环结构、异常处理等,极大地提高了数据库操作的效率和灵活性。 1. **存储过程的创建**: 创建存储过程的基本语法是`...
在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle存储过程的创建、游标的使用以及Java代码如何与Oracle存储过程交互。 首先,`TESTPACKAGE.txt`很可能包含...
Oracle 存储过程的加密是保护数据库中敏感信息和商业逻辑的重要手段,特别是当存储过程包含敏感算法或者商业秘密时。Oracle 提供了两种方法来加密存储过程:使用 `wrap` 工具和 `dbms_ddl` 包。 1. **wrap 工具** ...
总结来说,这个入门实例涵盖了使用Java通过JDBC调用Oracle存储过程进行CRUD操作的基本流程,以及利用DOM4J解析XML配置文件和`ThreadLocal`管理数据库连接的方法。这样的设计使得程序更加模块化,易于维护,同时也...
本文将详细讲解如何使用Oracle存储过程完成这一任务,并提供源代码和相关截图辅助理解。 首先,理解XML文件:XML(Extensible Markup Language)是一种用于标记数据的语言,它的结构清晰、可读性强,常用于数据交换...
在《ORACLE存储过程,函数,包,游标》这个文本文件中,可能包含了关于如何定义、调用和管理这些对象的示例代码和实践指导。通过阅读和理解这个文件,开发者能够深入了解Oracle数据库的动态编程能力,提升其在数据库...
如果序列列表在文本文件中,可能需要先读取文件,然后循环调用存储过程。 总之,批量修改Oracle序列值的存储过程是一个实用的工具,能够提高数据库维护的效率。但请注意,直接修改序列值可能会对依赖序列的业务逻辑...
本话题将深入探讨如何在Oracle存储过程中检查和处理非法字符。 首先,我们需要明确什么是非法字符。在数据库上下文中,非法字符通常指的是那些可能导致SQL注入、数据格式错误或者不符合数据库字段定义的字符,如单...
在本案例中,我们聚焦于如何使用CodeSmith来生成Oracle存储过程,特别是基于数据库表结构自动生成存储过程。 Oracle存储过程是预编译的SQL语句集合,可以包含数据处理逻辑,控制流语句以及用户定义的函数和过程。...
Oracle数据库中的存储过程是数据库管理员和开发者常用的工具,用于封装一系列的SQL和PL/SQL语句,以便在需要时重复调用。为了增强安全性,有时我们需要对这些存储过程进行加密,防止未授权的访问和阅读。本文将详细...
Oracle存储过程是数据库管理系统中的一种重要功能,它允许程序员或DBA编写一组SQL语句和PL/SQL代码,然后以单个对象的形式存储在数据库中。这样,这些过程可以被多次调用,减少了网络流量,提高了性能,并且使得代码...