Olá pessoal. :D
Estamos começando a usar iBatis aqui na empresa, e estamos tomando uma surra pra rodar uma simples proc, queries de consultas normais não tivemos problemas.
Só pra exemplificar o que estamos querendo fazer:--PROC
CREATE OR REPLACE PROCEDURE PROCEDURE1 ( param1 IN NUMBER, param2 OUT VARCHAR2) AS
BEGIN
SELECT COLUNA2
INTO
param2
FROM TABELA
WHERE COLUNA1 = param1 ;
END PROCEDURE1;
<!-- Mapeamento no xml -->
<resultMap id="myProcTestResult" class="br.com.projeto.modelo.entidade.Tabela">
<result property="coluna1" jdbcType="NUMBER" javaType="java.lang.Long" column="coluna1"/>
<result property="coluna2" jdbcType="VARCHAR" javaType="java.lang.String" column="coluna2"/>
</resultMap>
<parameterMap id="paramsProcTest" class="map" >
<parameter property="coluna1" jdbcType="NUMBER" javaType="java.lang.Long" mode="IN"/>
<parameter property="coluna2" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
</parameterMap>
<procedure id="myProcTest" resultClass="br.com.projeto.modelo.entidade.Tabela" parameterMap="paramsProcTest" resultMap="myProcTestResult">
{call PROCEDURE1(?, ?)}
</procedure>
//Código no java pra executar a proc pelo ibatis
Map<String, Object> map = new HashMap<String, Object>();
map.put("coluna1", "1");
String coluna2 = (String) sqlMapClient.queryForObject("tabela.myProcTest", map);
Alguém sabe dizer onde estou errando? Está passando sem erros, porém a string está vindo nula, como se eu estivesse passando um valor que não existe no banco. :(