日期:2014-05-16  浏览次数:20346 次

oracle 存储过程 返回结果集 游标
create or replace procedure CODE_PROC(codeNo in VARCHAR2,
                                        p_cursor out sys_refcursor)
is
str1 varchar2(20);
str2 varchar2(20);
begin
  if length(codeNo)=2 then
      str1:=codeNo||'%00';
      str2:=codeNo||'0000';
  elsif length(codeNo)=4 then
      str1:=codeNo||'%';
      str2:=codeNo||'00';
  end if;
  OPEN p_cursor FOR
    select code_no,code_name from tb_code
    where code_no like str1 and code_no!=str2;
end CODE_PROC;


<resultMap id="code_proc" class="com.xxx.Code" >
        <result property="codeNo" column="code_no"/>
        <result property="codeName" column="code_name"/>
    </resultMap>
<parameterMap  id="parameter-map" class="java.util.HashMap">
        <parameter property="codeNo" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
        <parameter property="p_cursor" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" />
    </parameterMap>
<procedure id="getCodeList" parameterMap="parameter-map" resultMap="code_proc">
        {call PROV_CODE_PROC(?,?)}
    </procedure>

public List<Code> getCodeList(String codeNo) {
Map parameterMap = new HashMap();
parameterMap.put("codeNo", codeNo);
return this.executeQueryForList("getCodeList", parameterMap);
}

java.sql.sqlException:类型长度大于最大值 数据库驱动问题

我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html