Retorno de Stored Procedure

6 respostas
J

Boa noite, não consigo receber o retorno da Stored Procedure (no SQLServer, se executo manualmente no bd, consigo o retorno, mas não consigo no ResultSet, segue abaixo o código para que possam ter idéia.

CallableStatement comand;
		ResultSet rs;
		Exception exception;
		String comando = "{call LOGAR_SISTEMA(?, ?, ?)}";

		comand = null;
		ConFactorySQLServ conect = new ConFactorySQLServ();
		Connection conexao = conect.getConnection();
		int cont = 1;
		comand = conexao.prepareCall(comando);
		comand.setString(cont++, usuario.getUsuario());
		comand.setInt(cont++, usuario.getSenha());
		comand.setString(cont++, "N");

		rs = comand.executeQuery();
		while (rs.next()) {
			usuario.setAcesso(rs.getString("ACESSO"));
		}
		conexao.close();

procedure no sql Server

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[LOGAR_SISTEMA]

@USER VARCHAR(06),
						@PASSWORD  INT,
						@ACESSO VARCHAR(01) OUTPUT

AS

DECLARE @USUARIO VARCHAR(06)

SET @ACESSO = ‘N’

SET @USUARIO = (SELECT USUARIO FROM TB_USUARIO WHERE
USUARIO = @USER AND SENHA = @PASSWORD)

IF(@USUARIO = @USER)
BEGIN
SET @ACESSO = ‘S’

END

Obrigado pela atenção

6 Respostas

H

Posta o script do BD, assim fica mais fácil de testar

H

posta pelo menos o METODO COMPLETO QUE EXECUTA a procedure não dá para saber se vc declarou o metodo como public ou void

E

Boa noite,

Vamos ver se consigo te ajudar. Primeiro informe o tipo do parâmetro de retorno com o método:

comand.registerOutParameter(indice, Types.VARCHAR)

Depois execute com comand.execute().

Para pegar o retorno use comand.getObject(indice).

Edson Martins

H

conseguiu resolver?

J

A procedure do BD está acima com o subtítulo “procedure no sql Server” e quanto a outra resposta irei testar a noite. Obrigado.

J

Bom dia, consegui resolver, estava trabalhando com retornos do SQLServer, bastava eu fazer apenas o Select para trazer o ResultSet. Mudei o código da procedure, segue abaixo o código implementado. Obrigado por terem me ajudado.

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[LOGAR_SISTEMA]

@USER VARCHAR(06),
@PASSWORD INT,

AS

DECLARE @USUARIO VARCHAR(06)

SET @ACESSO = ‘N’

SELECT USUARIO FROM TB_USUARIO WHERE
USUARIO = @USER AND SENHA = @PASSWORD)

Criado 11 de setembro de 2011
Ultima resposta 13 de set. de 2011
Respostas 6
Participantes 3