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;
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.
Exatamente isso, funcionou! Valeu cara.
Mas tem uma coisa, e se fosse um caso, onde meu parâmetro fosse de um objeto e meu retorno fosse de outro?
Pq nesse caso aí, eu passo um map como parametro e recebo um map como resultado, se eu quisesse passar um map como parametro e receber um objeto User por exemplo, da minha regra de negócios?
Engraçado que depois que eu chamo esse método, ele carrega o meu map “parameterMap” com todos os atributos de saída da minha proc.
Eu queria carregar o meu bean, mas não consegui nem fazendo cast e nem passando como parâmetro como no map acima.
sqlMapClient.queryForObject("elegibilidade.verificaElegibilidade", parameterMap, meuBean);
MeuBean meuBean = (MeuBean) sqlMapClient.queryForObject("elegibilidade.verificaElegibilidade", parameterMap);
Onde será que está o erro?[/quote]
o problema é que em procedures os parâmetros também podem ser uma saida (um retorno, marcado com OUT):
eu duvido muito, mas quem sabe, vc poderia colocar um result map só para as propriedades OUT e deixar no parameter map só as propriedades IN. Não sei se funciona, é só uma sugestão.