Estou executando a seguinte function: [color=brown]function [/color]Valida_Login_Texto(p_login [color=brown]in[/color] webacesso.waclogin%[color=brown]type[/color],
p_senha [color=brown]in[/color] webacesso.wacsenha%[color=brown]type[/color],
p_system [color=brown]in char[/color]) [color=brown]return char[/color];
Com este código abaixo:
public class AutenticaUsuario {
private static Connection conn = null;
private DataSource ds;
public String validaLoginTexto(String username, String password, char tipo) {
CallableStatement ctsmt = null;
String p_result = null;
try {
ds = new DataSource();
conn = ds.getConnection();
// Executa Function para validação de login e senha
ctsmt = conn.prepareCall("begin ? := producao.web_acesso_online.valida_login_texto(?,?,?); end;" ) ;
ctsmt.setString(1, username);
ctsmt.setString(2, password);
ctsmt.setInt(3, tipo);
ctsmt.execute();
p_result = ctsmt.getString(4);
ctsmt.close();
System.out.println(p_result);
} catch (SQLException e) {
e.printStackTrace();
}
return p_result;
}
public static void main(String[] args) {
AutenticaUsuario u = new AutenticaUsuario();
u.validaLoginTexto("heider", "123456", 'A');
}
}
Reparem que o terceiro parametro da função, é do tipo [color=brown]char[/color].
Qual o tipo de método da classe CallableStatement utilizo para setar este parametro de entrada na função?
Da forma como estou fazendo estou recebendo a seguinte exception:
Mas me cabe uma pergunta, esta correto setar um parametro do tipo [color=brown]char[/color], com o método setInt(4, tipo);?
O parametro informado para este campo é igual a ‘A’.
Substitui a chamada do método validaLoginTexto, onde era informado um valor do tipo char
public static void main(String[] args) {
AutenticaUsuario u = new AutenticaUsuario();
u.validaLoginTexto("heider", "123456", 'A');
}
agora é informado um valor do tipo String
public static void main(String[] args) {
AutenticaUsuario u = new AutenticaUsuario();
u.validaLoginTexto("heider", "123456", "A");
}
Na declaração do método modifiquei o seguinte parãmetro
public String validaLoginTexto(String username, String password, char tipo) { }
para esta
public String validaLoginTexto(String username, String password, String tipo) { }
Funcionou perfeitamente, lembrando que na declaração da function no BD Oracle, este ultimo campo é do tipo char.
T+.