none
Select com IF's RRS feed

  • Pergunta

  • Pessoal, preciso saber como criar a seguinte sp.

     

    Create Procedure spTeste(

    @Usuario int,

    @Senha nvarchar(50),

    @Tarefa int,

    @Retorno int Output) as

     

    Selecionar campo.codigo, campo.senha from usuarios where campo.codigo = @Usuario

    begin

      if campo.senha = @senha

     else

       begin

       @Set @Retorno = 3

       'Sair da excecucao da sp...

       end 

    end 

    ....se a senha é verdadeira continua....

     

    Selecionar campo.codigo, campo.tarefa from permissoes where campo.codigo = @usuario

    begin

     if campo.tarefa = @Tarefa

     else

      begin

      @Set @Retorno = 2

      'Sair da execucao da sp

     end 

     

    exec(select * from usuarios)

    IF @@rowcount > 0)

    @Set @Retorno = 1

     

    end

     

    resumindo se os dois select's forem verdadeiros executa uma outra tarefa qualquer e retorna 1

     

     

    quarta-feira, 4 de abril de 2007 13:02

Todas as Respostas

  •  

     use um return que sai da proc

     

    exemplo

     

     

    Create Procedure spTeste(

    @Usuario int,

    @Senha nvarchar(50),

    @Tarefa int,

    @Retorno int Output) as

     

    Selecionar campo.codigo, campo.senha from usuarios where campo.codigo = @Usuario

    begin

      if campo.senha = @senha

     else

       begin

       @Set @Retorno = 3

        return -- sai da proc

       end

    ...

    ...

    quarta-feira, 4 de abril de 2007 13:05
  • Luiz,

     

    O comando Return é utilizado justamente para sair de uma procedure em execução, quando ele é processado pelo SQL Server, ele devolve o controle do processamento que estava sendo executado o SQL Server, desta forma, é possível interromper a execução da procedure ou function.

    quarta-feira, 4 de abril de 2007 13:22
  • Bom dia Luiz

     

    Create Procedure spTeste(

    @Usuario int,

    @Senha nvarchar(50),

    @Tarefa int,

    @Retorno int Output) as

     

    Selecionar campo.codigo, campo.senha from usuarios where campo.codigo = @Usuario

    begin

       Declare @Senha_Tmp varchar(50),

                   @Tarefa_Tmp int

     

       Select @Senha_Tmp = Senha From Usuarios where Codigo = @codigo

     

      if @Senha_Tmp <> @senha

        begin

             Set @Retorno = 3

             Return

         end

     

    ....se a senha é verdadeira continua....

     

    Selecionar campo.codigo, campo.tarefa from permissoes where campo.codigo = @usuario

     

    Select @Tarefa_Tmp = Tarefa from Permissoes where codigo = @Usuario

     

    If @Tarefa <> @Tarefa_Tmp

    begin

         @Set @Retorno = 2

          Return

      'Sair da execucao da sp

     end 

     

    exec(select * from usuarios)

    IF @@rowcount > 0)

    @Set @Retorno = 1

     

    end

     

    Espero ter ajudado
    quarta-feira, 4 de abril de 2007 13:23
  • Olá Luiz,

     

    Você pode tentar assim também:

     

    Create Procedure spTeste(@Usuario int,@Senha nvarchar(50),@Tarefa int,@Retorno int Output)
    as
    begin
    if (select count(1) from usuarios
    where
    codigo=@usuario and senha=@senha) = 0
      begin
        set @retorno = 3
        return
      end

    if (select count(1) from permissoes
    where
    codigo=@usuario and tarefa=@tarefa) = 0
      begin
       set @retorno = 2
       return
      end

    if (select count(1) from usuarios) >= 0
      begin
        set retorno = 1
        return
      end
    end

     

    Espero ter ajudado

    quarta-feira, 4 de abril de 2007 15:07