CallableStatement

1 resposta
C

Alguém pode me explicar esse código e como setar o retorno na variável username...

public String findFiscalUsername(int idUsuario) {
		String username = null;	

		CallableStatement stmt;
		try {
			stmt = getConnection().prepareCall(
			  "{?=call CtrlAcesso.dbo.sp_gia_obtem_username_cfop(?,?)}");
			stmt.registerOutParameter(1, java.sql.Types.INTEGER);
			stmt.setInt( 2, idUsuario);
			stmt.registerOutParameter(3, java.sql.Types.CHAR);
			stmt.execute();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}	
 
		return username;
	}

1 Resposta

A

Para setar o valor de sua variável, seria isto: depois do stmt.execute() acrescentar essa linha

username = stmt.getString(3);

Mas olha só: quando você chama o método registerOutParameter(), você informa duas coisas: o número do parâmetro que você quer setar como sendo de saída da procedure e o tipo que você espera receber dele. Olhando seu código, dá a impressão de que o valor que será passado para sua variável username deverá vir do primeiro parâmetro, então setá-lo como int estaria incorreto(?). O que parece um pouco mais estranho é se referir ao terceiro parâmetro como sendo de saída, mas se ele está dentro do parêntese da chamada da procedure, ele não seria de entrada?

Criado 21 de novembro de 2006
Ultima resposta 21 de nov. de 2006
Respostas 1
Participantes 2