Erro ao executar uma function em Java com o CallableStatement [RESOLVIDO]

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:

Alguém poderia dar uma ajuda, obrigado.

Corrigi o erro com este código abaixo:

ctsmt = conn.prepareCall("begin ? := producao.web_acesso_online.valida_login_texto(?,?,?); end;" ) ;
ctsmt.registerOutParameter(1, Types.VARCHAR);
ctsmt.setString(2, username);
ctsmt.setString(3, password);
setInt(4, tipo);

execute();

p_result = ctsmt.getString(1);

ctsmt.close();

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’.

Muito obrigado.

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+.