Problema com SQL - Se alguem puder ajudar

Caros, criei um bd no sql server, criei as tabelas, procedures… e estava fazendo uma aplicação java para acessar esse banco, tive um problema na máquina e precisei formatar, qdo reinstalei o sql e restaurei o script as procedures não retornam mais valores, esse é o exemplo de uma das procedures que pararam de funcionar:

CREATE Procedure buscaLogin
@login varchar(8),
@senha varchar(8),
@tipo_login varchar(50) output
as
select @tipo_login = tipo From login where (login = @login) and (senha = @senha)

Alguém sabe o que pode estar acontecendo?

Existe dados nessa tabela login, faça o mesmo select que esta sendo passado na procedure e rode no Query Analizer e veja se retorna alguma coisa?

retorna sim, testei mais uma vez so pra garantir! :slight_smile:

tipo

estudante

(1 row(s) affected)

Sua query esta meio estranha

select @tipo_login = tipo From login where (login = @login) and (senha = @senha) 
  

não seria

select tipo From login where login = @login and senha = @senha and tipo =  @tipo_login

isso é um trabalho de BD, eu preciso que retorne para aplicação o tipo do usuário para determinar o que ele vai poder fazer. A regra do trabalho é que tudo seja feito via store procedure

Tinha uma tabela semelhante aqui e do jeito que vc ta fazendo não retorna nada, testou do jeito que eu te falei?

Faça assim e teste novamente:

ALTER Procedure buscaLogin 
@login varchar(8), 
@senha varchar(8), 
@tipo_login varchar(50) output 
as 
select tipo From login where login = @login and senha = @senha and tipo =  @tipo_login

select tipo from login where login = ‘usuario’ and senha = ‘1234’

tipo

estudante

(1 row(s) affected)

Via query Analyser estou executando a procedure assim:
declare @tipo varchar(50)
exec buscaLogin ‘usuario’, ‘1234’, @tipo
print @tipo

Sua query na procedure esta diferente da query mencionada, tente assim e veja o que acontece:

ALTER Procedure buscaLogin 
 @login varchar(8), 
 @senha varchar(8)
 as 
 select tipo From login where login = @login and senha = @senha

Chame a procedure assim

exec buscaLogim ‘login’,‘senha’

dessa forma:

tipo

(0 row(s) affected)

ele mostra o resultado mas na aplicação da esse erro: Output parameters have not yet been processed. Call getMoreResults().

private void ExecuteSQLSelect(String l, String s){
		try {
			String command;
			command = "{call buscaLogin(?,?,?)}";
			CallableStatement cs = con.prepareCall(command);
			cs.registerOutParameter(3, Types.VARCHAR);
	        cs.setString(1, l);
	        cs.setString(2,s);
	        cs.execute();
 			tipo = cs.getString(3);
 			login = l;
		} 
		catch (SQLException e) {
			e.printStackTrace();
		}
}

Tente colocar isso:

de:

cs.execute(); 

para:

ResultSet rs = cs.execute(); 
rs.next();

Por convenção sempre inicie métodos com letra minuscula.