MySQL Forums
Forum List  »  Portuguese

Re: retorno de varios parâmetros
Posted by: Lucas Michel
Date: November 18, 2009 08:27AM

Lucas Michel Wrote:
-------------------------------------------------------
> como recuperar mais de um parâmetro de retorno
> fas stored procedres?
> do tipo a seguir
>
> DROP PROCEDURE IF EXISTS
> `cse_2008`.`TESTA_EXISTENCIA_MATERIAL` $$
> CREATE DEFINER=`root`@`localhost` PROCEDURE
> `TESTA_EXISTENCIA_MATERIAL`
> (
> nome varchar(100),
> senha varchar(100),
>
> out
> estado int,
> cod int,
> msg varchar(100)
> )


olá a todos, me estressei bastante como sempre mas consegui contornar o problema, ilustrando melhor o problema vou mostrar um exemplo melhor:


DELIMITER //

CREATE PROCEDURE `mbc`.`UsuarioLogin`
(
in
login_entrada varchar(45),
senha_entrada varchar(45),
out
retorno int,
msg varchar(150),
id_usuario int

)
BEGIN
declare senha_interno varchar(47);
select idusuario, senha into @id_usuario, senha_interno from usuario where login = login_entrada;
if(senha_interno is null) then
begin
set @retorno = 1;
set @msg = 'Usuário inexistente';
set @id_usuario = 0;
end;
else
begin
if(senha_interno <> senha_entrada) then
begin
set @retorno = 2;
set @msg = 'Senha de usuario inválida';
set @id_usuario = 0;
end;
else
begin
set @retorno = 3;
set @msg = concat ('Usuário ',login_entrada,' liberado com sucesso!');
end;
end if;
end;
end if;
END//


o que acontecia é que quando eu tentava recuperar as variáveis
select @retorno, @msg, @id_usuario;

retornavam sempre o NULL ou com os valores errados, depois de várias tentativas identifiquei que o problema esta na primeira variável se existir mas de um parmêtro de retorno como neste caso que tem 3 o primeiro sempre retornava NULL ai eu adicionei uma varíavel a mais na primeira posição como segue o exemplo:

DELIMITER //

CREATE PROCEDURE `mbc`.`UsuarioLogin`
(
in
login_entrada varchar(45),
senha_entrada varchar(45),
out
nada int,
retorno int,
msg varchar(150),
id_usuario int

)
BEGIN
declare senha_interno varchar(47);
set @nada = 1;
select idusuario, senha into @id_usuario, senha_interno from usuario where login = login_entrada;
if(senha_interno is null) then
begin
set @retorno = 1;
set @msg = 'Usuário inexistente';
set @id_usuario = 0;
end;
else
begin
if(senha_interno <> senha_entrada) then
begin
set @retorno = 2;
set @msg = 'Senha de usuario inválida';
set @id_usuario = 0;
end;
else
begin
set @retorno = 3;
set @msg = concat ('Usuário ',login_entrada,' liberado com sucesso!');
end;
end if;
end;
end if;
END//

ai com a pesquisa
select @nada, @retorno, @msg, @id_usuario;

retornou tudo na ordem com a variável @nada com o vaor NULL e as outras preenchidas corretamente, espero que ajude mas alguem, chau

Options: ReplyQuote


Subject
Views
Written By
Posted
5052
November 17, 2009 07:05PM
Re: retorno de varios parâmetros
6895
November 18, 2009 08:27AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.