- 浏览: 197200 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (183)
- struts1 (2)
- android (1)
- 工作总结 (15)
- java (23)
- 信息拓展 (10)
- linux (1)
- html5 (10)
- js基础 (9)
- 系统设计 (2)
- css dhtml (7)
- oracle sqlplus plsql (3)
- div+css (1)
- 面试试题 (1)
- java.ibatis (3)
- 项目开发 (2)
- oracle (10)
- eclipse (1)
- 自强之道 (1)
- velocity (1)
- 常用办公软件EXCEL WORD PPT (1)
- ORA-02298: 无法验证 (PNET.POST_CLOB_FK) - 未找到父项关键字 (1)
- ligerui (1)
- 业务系统 (0)
数据库存储过程如下:
procedure p_project_details_stat
(
i_date_start in
varchar2,
i_date_end in varchar2,
i_range_start in
number,
i_range_end in number,
i_org_id in
number,
i_species_id IN VARCHAR2,
i_query_user_id in
number,
o_report_id out number
)
配置调用如下:
<parameterMap id="proMap" class="map">
<parameter
property="complainDateStart" javaType="java.lang.String" mode="IN"
jdbcType="VARCHAR" />
<parameter property="complainDateEnd"
javaType="java.lang.String" mode="IN" jdbcType="VARCHAR"
/>
<parameter property="priceOne" javaType="java.math.BigDecimal"
mode="IN" jdbcType="NUMBER" />
<parameter property="priceTwo"
javaType="java.math.BigDecimal" mode="IN" jdbcType="NUMBER"
/>
<parameter property="orgId" javaType="java.math.BigDecimal"
mode="IN" jdbcType="NUMBER" />
<parameter property="speciesIdList"
javaType="java.lang.String" mode="IN" jdbcType="VARCHAR"
/>
<parameter property="userId" javaType="java.math.BigDecimal"
mode="IN" jdbcType="NUMBER" />
<parameter property="reportId"
javaType="java.math.BigDecimal" mode="OUT" jdbcType="NUMBER"
/>
</parameterMap>
<procedure id="generateProjectDetial"
parameterMap="proMap">
<![CDATA[
CALL
szzc_stat.p_project_details_stat(?,?,?,?,?,?,?,?)
]]>
</procedure>
老是报:
--- Check the CALL
szzc_stat.p_project_details_stat(?,?,?,?,?,?,?,?).
--- Check the output
parameters (register output parameters failed).
--- Cause:
java.sql.SQLException: 无效的列类型: -99999999
网上查找资料:
后来查看java.sql.Types类中有关JDBC类型变量类型,并没有发“NUMBER”这一静态字段,而只有“NUMERIC”字段。(因此 jdbcType 的值不是数据库ORACLE的参数类型,而是其对应的JDBC变量类型)
但改了之后依然报同样错误。
后来发现在java.sql.Types类中还有一个DECIMAL静态常量,与javaType定义的java.math.BigDecimal类型一致。
再修改测试则通过,不再报错。
所以“无效的列类型”异常解决方法,根据存储过程的参数类型找出正确的jdbcType(具体参考java.sql.Types类的JDBC静态变量)。
地址:http://www.cnblogs.com/leolwang/archive/2010/03/25/1694539.html
正确配置:
<parameterMap id="proMap" class="map">
<parameter
property="complainDateStart" javaType="java.lang.String" mode="IN"
jdbcType="VARCHAR" />
<parameter property="complainDateEnd"
javaType="java.lang.String" mode="IN" jdbcType="VARCHAR"
/>
<parameter property="priceOne" javaType="java.math.BigDecimal"
mode="IN" jdbcType="DECIMAL" />
<parameter property="priceTwo"
javaType="java.math.BigDecimal" mode="IN" jdbcType="DECIMAL"
/>
<parameter property="orgId" javaType="java.math.BigDecimal"
mode="IN" jdbcType="DECIMAL" />
<parameter property="speciesIdList"
javaType="java.lang.String" mode="IN" jdbcType="VARCHAR"
/>
<parameter property="userId" javaType="java.math.BigDecimal"
mode="IN" jdbcType="DECIMAL" />
<parameter property="reportId"
javaType="java.math.BigDecimal" mode="OUT" jdbcType="DECIMAL"
/>
</parameterMap>
<procedure id="generateProjectDetial"
parameterMap="proMap">
<![CDATA[
CALL
szzc_stat.p_project_details_stat(?,?,?,?,?,?,?,?)
]]>
</procedure>
jdbcType类型:
数据库类型与JDBC TYPE 和Java类型对应关系
SQL Datatypes |
JDBC Typecodes |
Standard Java Types |
Java取值范围 |
NUMBER |
java.sql.Types.NUMERIC |
java.math.BigDecimal |
无限制 |
NUMBER |
java.sql.Types.DECIMAL |
java.math.BigDecimal |
无限制 |
NUMBER |
java.sql.Types.BIT |
boolean |
true,false |
NUMBER |
java.sql.Types.TINYINT |
byte |
from –128 to 127 |
NUMBER |
java.sql.Types.SMALLINT |
short |
from –32768 to 32767 |
NUMBER |
java.sql.Types.INTEGER |
int |
From –2147483648 to 2147483647 |
NUMBER |
java.sql.Types.BIGINT |
long |
From –9223372036854775808 to 9223372036854775807 |
NUMBER |
java.sql.Types.REAL |
float |
From 1.4E-45 To 3.4028235E38 |
NUMBER |
java.sql.Types.FLOAT |
double |
From 4.9E-324 to 1.7976931348623157E308 |
NUMBER |
java.sql.Types.DOUBLE |
double |
|
发表评论
-
jasperreport不适用子报表实现中国式分组报表功能
2014-08-16 13:40 1374副标题: 单行统计报表中如何通过一列的值决定另一 ... -
优化功能点
2013-11-11 14:25 550今日优化XX反馈响应太慢的功能点: 1.成立采购小组选择用 ... -
开发常见报m(_ _)m
2013-09-11 12:00 720struts1 使用BeanUtils填充界面录入数据报 错 ... -
加载程序时不能正常启动,加载xml报错
2013-09-04 10:39 2163报错日志: Caused by: org.springfr ... -
字符编码优秀文章收集
2013-06-26 10:18 721http://www.ibm.com/devel ... -
数据库存储数据使用字符集与程序的无关
2013-06-21 11:24 8361.开发项目代码使用UTF-8 2.数据储存数据使用GB ... -
文件下载至内存溢出
2013-05-10 09:31 5089同事文章: 部分项目的文件下载处理方式如下: B ... -
ireport 报表中不同行不同的样式
2013-01-13 16:32 1937转载自: http://lzfhope.b ... -
ibatus 调用存储过程返回id值
2012-12-13 20:49 748public Integer generateItem ... -
去掉数组中的重复元素
2012-12-03 15:11 978/** * 返回不包含重复元素的数组 * ... -
解析用户输入的字符串,加入回车换行符
2012-11-10 12:35 2963用户要求界面显示要根据用户的输入格式显示,于是用了< ... -
LazyValidatorForm
2011-12-21 19:29 17451. private Map formObjGenera ... -
eclipse 不编译工程
2011-09-29 09:35 726网摘: eclipse出现不编译工程的现象。怎么刷 ... -
解决客户端页面刷新重复保存数据问题
2011-09-14 21:09 13861.用户点“保存”调用save()方法保存数据。 2.当用户 ... -
java 报表开发
2011-08-20 16:17 833《jasperreport 自定义java ... -
jasperreport自定义JRDataSource
2011-07-29 22:08 5267package com.sniper.report ... -
ibatis中不清楚知识点
2011-06-21 14:58 7011.不清楚问题: <update id=&quo ... -
附件测试
2011-06-17 10:10 617附件测试 -
文件下载
2011-06-01 16:50 680BufferedInputStream bis = ne ... -
使用extremecomponents之妙
2011-06-01 15:25 1310<ec:table items="no ...
相关推荐
最后,在Java代码中,通过ibatis的Session对象调用存储过程,传入必要的参数,处理返回的结果集。 ```java SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources....
在Java开发中,iBATIS(现在被称为MyBatis)是一个流行的数据持久层框架,它允许开发者将SQL语句直接嵌入到Java代码中,从而简化数据库操作。...希望这个示例能帮助你更好地理解iBATIS调用存储过程的方法。
本文将详细介绍如何使用iBATIS调用存储过程,并提供一个简单的示例来说明其过程。 首先,我们需要在数据库中创建一个存储过程。以下是一个Oracle数据库中的存储过程示例: ```sql CREATE OR REPLACE PROCEDURE pp ...
### Ibatis调用存储过程详解 #### 一、引言 在实际的软件开发过程中,存储过程因其执行效率高及数据库级别的安全性等优点被广泛应用于各种业务场景之中。而对于使用Ibatis作为持久层框架的应用来说,如何有效地...
#### 使用Ibatis调用存储过程 Ibatis是一个Java持久层框架,它能够简化Java应用程序与数据库之间的交互。为了调用上述存储过程并正确处理返回值,我们需要进行以下配置: ##### 日志配置(log4j.properties) ```...
本文将深入探讨如何使用iBatis调用存储过程并返回游标,这是一个在处理复杂数据库操作时常见的需求。 ### iBatis调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以...
调用存储过程: ```java Map, Object> params = new HashMap(); params.put("id", id); sqlSession.execute("updateEmployeeStatus", params); String status = (String) params.get("status"); ``` 5. **...
在实际项目中,使用Ibatis调用存储过程时,还应注意以下几点: 1. 不同的数据库系统可能有不同的存储过程调用语法,如Oracle、MySQL、SQL Server等,需要根据具体数据库进行调整。 2. 存储过程中的输出参数在Java...
本篇文章将详细探讨如何在iBatis中调用Oracle的函数和存储过程,尤其是处理IN和OUT参数以及游标的场景。 首先,我们需要了解iBatis的基本工作原理。iBatis是一个SQL映射框架,它允许开发者将SQL语句写在XML配置文件...
本篇文章将深入探讨如何在Ibatis中实现增、删、查、改(CRUD)操作,并调用存储过程,同时涉及相关的表结构设计。 首先,Ibatis通过XML配置文件或注解方式定义了SQL语句,允许我们编写动态SQL,以适应不同的查询...
总结,Struts2调用存储过程涉及数据库连接、DAO设计、Action控制和视图展示等多个环节。通过合理配置和编程,我们可以有效地利用存储过程提升应用的效率和灵活性。"Struts2_crud2.0_Procedure"示例提供了具体实现,...
本教程将深入探讨Ibatis如何实现CRUD(创建、读取、更新、删除)操作,如何调用存储过程,以及如何进行动态查询。 **创建(Create)** 在Ibatis中,创建数据通常通过SQL映射文件实现。每个映射文件包含一个或多个...
本教程将详细介绍如何利用Ibatis进行增删改查操作,调用存储过程以及实现分页功能,并通过Log4j配置来输出SQL日志。 首先,让我们了解Ibatis的基本配置。Ibatis的核心配置文件是`mybatis-config.xml`,在这里你可以...
在Mybatis的Mapper XML文件中,通过设置`<select>`元素的`statementType`属性为`CALLABLE`来调用存储过程。例如: ```xml {call func_arr_update(#{ids, mode=IN, jdbcType=ARRAY})} ``` 这里的`#{ids}`是Java...
通过这个 iBatis 入门教程,你应该已经掌握了如何配置 iBatis、编写映射文件、创建接口、调用存储过程以及使用动态 SQL 等基本操作。在实际开发中,iBatis 还有许多高级特性和最佳实践,例如结果映射、缓存机制、...
- **存储过程调用**:可以通过ibatis方便地调用数据库中的存储过程,并处理返回的结果集。 ```xml <parameter property="p0" jdbcType="INTEGER" javaType="string" mode="OUT"/> <parameter property="p1" ...
)}`则是具体调用存储过程或函数的SQL语句。 #### 二、ParameterMap标签定义输入输出参数 对于存储过程或函数来说,它们往往需要与应用程序交互数据。为了实现这一点,IBATIS提供了`parameterMap`标签来定义输入...
`@MappedJdbcTypes(JdbcType.VARCHAR)`注解表示此TypeHandler适用于JDBC的VARCHAR类型,因为通常JSON数据以字符串形式存储在数据库中。 类中有一个静态的`ObjectMapper`实例,这是Jackson库的主要组件,用于读取和...
MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程,可以将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)...