引用
create or replace function getClassifiedCode(p_planCode in varchar2 -- 险种代码
,
p_usageAttributeCode in varchar2 -- 使用性质代码
,
p_ownershipAttributeCode in varchar2 -- 所属性质代码
,
p_vehicleTypeCode in varchar2 -- 车辆种类代码
) return varchar2 is
v_classified_code varchar2(10);
v_vehicleTypeCode varchar2(200) := p_vehicleTypeCode;
v_message varchar2(2000);
-- 定义字符串数组类型
type type_array is varray(9) of varchar2(200);
vehicleArray type_array := type_array('A010:A011:A012',
'A020:A021:A022:A032',
'A030:A031:A042:A052',
'B010:B011:B012',
'B020:B021:B022:B032',
'B030:B031:B042',
'C010:C011:C020:C021:C030:C031:B140:B141:E010:E011:E110:E111:C012:C022:C032:C042:B142:E012:E022:E112:E122',
'D110:D111:D010:D011:D012:D022:D112',
'C012:C112:C122:C132:C142:C152:C162:C172:C182');
begin
for i in 1 .. vehicleArray.count loop
if (instr(vehicleArray(i), p_vehicleTypeCode, 1, 1) > 0) then
v_vehicleTypeCode := vehicleArray(i);
exit;
end if;
end loop;
select max(class_rule_code)
into v_classified_code
from class_rule_factor
where factor_code = 'F00085'
and factor_value_set = p_planCode;
if (v_classified_code is not null) then
return v_classified_code;
end if;
select max(class_rule_code)
into v_classified_code
from class_rule_factor
where class_rule_code in
(select distinct class_rule_code
from class_rule_factor
where class_rule_code in
(select distinct class_rule_code
from class_rule_factor
where factor_code = 'F00039'
and factor_value_set = p_usageAttributeCode)
and factor_code = 'F00040'
and factor_value_set = p_ownershipAttributeCode)
and factor_code = 'F00042'
and factor_value_set = v_vehicleTypeCode;
if (v_classified_code is not null) then
return v_classified_code;
end if;
select max(class_rule_code)
into v_classified_code
from class_rule_factor
where class_rule_code in
(select distinct class_rule_code
from class_rule_factor
where factor_code = 'F00039'
and factor_value_set = p_usageAttributeCode)
and factor_code = 'F00042'
and factor_value_set = v_vehicleTypeCode;
if (v_classified_code is not null) then
return v_classified_code;
end if;
select distinct max(class_rule_code)
into v_classified_code
from class_rule_factor
where factor_code = 'F00999'
and factor_value_set = 'OTHER';
return v_classified_code;
exception
when others then
v_message := sysdate || '日运行错误,错误号:' || SQLCODE || '错误原因:' ||
substr(sqlerrm, 1, 1800);
-- dbms_output.put_line(v_message);
return null;
end getClassifiedCode;
@Override
public String getClassifiedCode(Map paramMap) throws PafaDAOException {
String classifiedCode = null;
try{
this.getSqlMapClientTemplate().queryForObject("apply.getClassifiedCode", paramMap);
classifiedCode = (String) paramMap.get("result");
}catch(DataAccessException e){
throw NBAExceptionFactory.createPafaDAOException(this.getClass().getName(), "getClassifiedCode", "根据险种代码查找classifiedCode异常 .", "参数:paramMap = "+paramMap, e);
}
return classifiedCode;
}
<!-- 获取任务分类 -->
<parameterMap id="getClassifiedCodeParamMap" class="java.util.Map">
<parameter property="result" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" />
<parameter property="planCode" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
<parameter property="usageAttributeCode" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
<parameter property="ownershipAttributeCode" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="vehicleTypeCode" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
</parameterMap>
<procedure id="getClassifiedCode" parameterMap="getClassifiedCodeParamMap">
{ ?= call epciscde.getClassifiedCode(?,?,?,?)}
</procedure>
分享到:
相关推荐
- 使用SqlSession对象的`selectOne`或`execute`方法调用相应的方法。 调用函数: ```java String employeeName = sqlSession.selectOne("callOracleFunction", id); ``` 调用存储过程: ```java Map, ...
ibatis调用oracle存储过程分页
在iBatis中,你可以创建一个Java方法来映射这个函数,方法的返回类型应与Oracle函数的返回类型匹配。在SQL映射文件中,使用`<select>`标签定义这个函数调用,并在`resultType`属性中指定返回类型。 2. **处理IN参数...
在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用Oracle存储过程是一个常见的需求,这不仅能够提升代码的执行效率,还能增强应用程序的安全性。本文将深入解析ibatis如何与Oracle数据库中的存储过程进行...
本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现返回自定义类型的处理方法。 #### Oracle自定义类型简介 Oracle支持用户自定义数据类型,这为复杂数据结构的应用提供了极大的便利。...
在IT行业中,数据库管理和持久化框架是至关重要的技术领域,而`ibatis+oracle`的组合就是这样的一个经典实例。Ibatis,一个轻量级的Java ORM(对象关系映射)框架,允许开发者将SQL语句与Java代码分离,提高了数据库...
ibatis 读取oracle clob类型
5. **调用Ibatis接口**:在Java代码中,通过SqlSession对象调用SQL映射文件中的方法执行数据库操作。例如: ```java SqlSession session = sqlSessionFactory.openSession(); User user = session.selectOne(...
本项目整合了Spring MVC、iBatis和Oracle数据库,这三个组件都是企业级应用开发中的重要工具。接下来,我们将深入探讨这三个技术以及它们如何协同工作。 **Spring MVC框架** Spring MVC是Spring框架的一部分,是一...
1. **Ibatis的基本使用**:如何配置SqlMapConfig.xml,定义Mapper接口和XML映射文件,以及如何在Java代码中通过SqlSession调用Mapper方法。 2. **Oracle数据库的连接**:了解如何在Java中使用JDBC和odbc14.jar驱动...
iBatis调用存储过程
ibatIS调用存储过程是数据库操作中常见的一种技术,特别是在复杂的业务逻辑处理或数据批量操作时,存储过程能够提供更高的效率和更好的性能。本文将深入探讨如何在ibatIS框架中调用存储过程,以及涉及到的相关知识点...
综上所述,这个实例展示了如何整合Struts2、Spring、iBatis和Oracle来构建一个完整的Web应用,实现了动态分页搜索和附件上传功能。这种架构具有良好的可扩展性和可维护性,适用于各种中大型企业级项目。开发者可以...
Spring、iBatis和Oracle的结合提供了强大的数据处理能力。本文将深入探讨这些技术如何协同工作,实现高效的分页缓存策略。 首先,Spring是一个开源的Java框架,它为开发人员提供了依赖注入(DI)和面向切面编程...
`session.selectOne()`方法调用存储过程,传入映射文件中的`id`和参数`map`。调用完成后,`z`的值会更新在`map`中,我们可以从`map`获取并打印出来。 总结来说,使用iBATIS调用存储过程主要涉及以下几个步骤: 1. ...
当我们需要调用数据库中的存储过程时,iBATIS也提供了一种简便的方法。本篇文章将详细介绍如何在iBATIS中调用存储过程,包括带参数和不带参数的存储过程,并通过一个具体的例子进行说明。 首先,存储过程是预编译的...
这个“ibatis oracle 实例”压缩包提供了将Ibatis与Oracle数据库结合使用的具体示例,旨在帮助开发者更好地理解和应用这两个技术。 首先,我们来看Ibatis的核心概念。Ibatis的主要组成部分包括XML配置文件、SQL映射...
ibatis通过SQL映射文件,将接口方法调用映射为一个或多个SQL语句,并自动完成参数设置和结果集处理,从而简化了Java应用程序与数据库之间的交互。 ### 二、存储过程概述 存储过程是一种预编译的SQL脚本,它可以...