Boa tarde pessoal !
Como faço para recuperar um valor de um output parameter ? preciso retornar um valor int.
O que está errado no código abaixo ? ( a procedure resumida está ali embaixo ):
Obs: no System.out.println(…) no código abaixo, está retornando o valor 0 (zero) sendo que a procedure retorna a coluna “retorno” outro valor, como por exemplo o valor inteiro “2”.
public int Alteraragenda(Agenda objAgenda, Agenda objAgendab) throws SQLException{
Conexao conexao = new Conexao();
CallableStatement callable = conexao.getConexao()
.prepareCall("{call alteraragenda(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
callable.setInt(1, objAgenda.getCodigo());
callable.setString(2, objAgenda.getDoutor());
(...)
callable.registerOutParameter(19, java.sql.Types.INTEGER);
//callable.setInt(19, 1);
callable.execute();
int retorno = callable.getInt(19);
System.out.println("Parametro output: "+retorno);
return retorno;
}
Estou fazendo, no final da procedure, um select na variável @retorno que é o parâmetro de saída:
alter procedure alteraragenda(
@codigo int, (...)
@retorno int out
)
as
begin
declare @codagendaficar (...)
select @codagendaesta = codigoagendamento (..)
select @codagendaficar = codigoagendamento(...)
if @codigo = (...)
begin
set @retorno = 0
end
else
begin
if @codagendaesta (...)
begin
update agenda set (...)
set @retorno = 1
end
else
begin
if @codagendaficar (...)
begin
if @codpacienteesta (...)
begin
delete from agenda (...)
declare @nomeagendado nvarchar(50)
select @nomeagendado = nome from agenda where data = @data and hora = @hora and doutor = @doutor
if @nomeagendado is null or @nomeagendado = '' or @nomeagendado = null
begin
set @codigo = case when @codigo = '0' then null else @codigo end
insert into agenda (codigo, doutor, nome, telefone, data, hora, tipoagendamento, status, valor)
values ( @codigo, @doutor, @nome, @telefone, @data, @hora, @tipo, @status, @valor )
end
set @retorno = 2
end
else
begin
set @retorno = 3
end
end
else
begin
set @retorno = 4
end
end
end
select @retorno as retorno
end
A procedure acima retorna somente a coluna “retorno” com o valor, por exemplo “2”.
Desde já, obrigado