none
Exemplo de procedure RRS feed

  • Pergunta

  • Olá, eu precisa de um exemplo de uma proc onde o usuário irá entrar com várias informações como o exemplo abaixo.


    Idade
    Sexo
    Estado Civil
    Região
    Indicação

    O usuário pode preencher alguns dados, outros não, seria optativo, mas o que ele preencher eu devo buscar.

    Muito obrigado



    segunda-feira, 15 de janeiro de 2007 15:17

Respostas

Todas as Respostas

  • Create procedure dbo.teste (

    @Idade int = Null,
    @Sexo Char(1) = Null,
    @EstadoCivil Char(1) = Null,
    @Regiao varchar(100) = Null,

    @Indicacao varchar(100) = Null) as

    begin

    If @Idade is null

       begin

       -- Procedimento para buscar a idade

       end

     

    If @sexos null

       begin

       -- Procedimento para buscar a idade

       end

     

       -- etc

    end

     

    Espero ter ajudado

    segunda-feira, 15 de janeiro de 2007 15:29
  • Anderson, por favor, mais uma dúvida,

    Caso eu tenha um campo com vários itens

    Exemplo.

    Estado civil - x casado, x solteiro, x Divorciado, x separado

    Neste caso eu preciso fazer um select onde o usuário marcou.

    Selecione todos que sejam casado, separado e divorciado, como faço a seleção de mais de um parâmetro?

    Obrigado.


    segunda-feira, 15 de janeiro de 2007 15:34
  • neste caso faça um select utilizando o operador IN . Exemplo:

    SELECT * FROM SUATABELA WHERE EstadoCivil IN('Casado','Separado','Divorciado')

     

    Espero ter ajudado

     

    segunda-feira, 15 de janeiro de 2007 15:49
  • Neste caso tenho que criar 3 parâmetros se for uma proc?

    segunda-feira, 15 de janeiro de 2007 16:00
  • Nao vc pode fazer o seguinte, suponhamos que sua tabela de Estado Civil seja

    C=Casado

    S=Solteiro

    D=Divorciado

    você passaria apenas no @EstadoCivil o conteúdo('CSD')

    vc pode entao utilizar a função SUBSTRING para chegar os valores passados.Ex:

    Declare @TamString int,

                    @Busca varchar(200),

                     @Contador int

    Set @TamString = Len(@EstadoCivil)

    Set @Contador=1

    Set @Busca = ''

    While @Contador <= TamString

    begin

         If SubString(@EstadoCivil,@Contador,1) = 'C'

            set @Busca = @Busca + 'Casado'+','

         If SubString(@EstadoCivil,@Contador,1) = 'D'

            set @Busca = @Busca + 'Divorciado' + ','

       etc

    end

     

    Aí basta vc passar no seu select a variável @Busca.

     

     

    Espero ter ajudado...

    Boa sorte

    segunda-feira, 15 de janeiro de 2007 16:25
  • Não estou conseguindo fazer, da o seguinte erro.

    Server: Msg 156, Level 15, State 1, Procedure teste, Line 18
    Incorrect syntax near the keyword 'where'.
    Server: Msg 156, Level 15, State 1, Procedure teste, Line 28
    Incorrect syntax near the keyword 'and'.


    Create procedure teste (

    @Idade int = Null,
    @Sexo Char(1) = Null,
    @EstadoCivil Char(1) = Null,
    @Regiao varchar(100) = Null,
    @Indicacao varchar(100) = Null)
    as

    select * from cv_CandidatoDados

    begin

    If @Idade is null

       begin

       where idade = @Idade

       end

     

    If @sexo is null

       begin

       and sexo = @sexo

       end
      

    end

    segunda-feira, 15 de janeiro de 2007 16:35
  • Tenta assim:

    Create procedure teste (

    @Idade int = Null,
    @Sexo Char(1) = Null,
    @EstadoCivil Char(1) = Null,
    @Regiao varchar(100) = Null,
    @Indicacao varchar(100) = Null)
    as

    --select * from cv_CandidatoDados

    begin

    Declare @ClausulaWhere varchar(1000)

    If @Idade is null

       begin

          Set @ClausulaWhere1 = 'idade = ' + (select idade from cv_CandidatoDados)

       end

     

    If @sexo is null

       begin

          Set @ClausulaWhere2 = 'Sexo=' + (Select sexto from cv_CandidatoDados)
       end
      

    Select * FROM SUA TABELA WHERE @CLAUSULAWHERE1 + ' AND ' + @CLAUSULAWHERE2
    end

     

    Basicamente essa é a estrutura, boa sorte

    segunda-feira, 15 de janeiro de 2007 16:45
  • Da o seguinte erro.


    Server: Msg 137, Level 15, State 1, Procedure teste, Line 22
    Must declare the variable '@ClausulaWhere1'.
    Server: Msg 137, Level 15, State 1, Procedure teste, Line 31
    Must declare the variable '@ClausulaWhere2'.
    Server: Msg 137, Level 15, State 1, Procedure teste, Line 34
    Must declare the variable '@CLAUSULAWHERE1'.

    segunda-feira, 15 de janeiro de 2007 17:03
  • Create procedure teste (

    @Idade int = Null,
    @Sexo Char(1) = Null,
    @EstadoCivil Char(1) = Null,
    @Regiao varchar(100) = Null,
    @Indicacao varchar(100) = Null)
    as

    --select * from cv_CandidatoDados

    begin

    Declare @ClausulaWhere1 varchar(1000),

                   @ClausulaWhere2 varchar(1000)

    If @Idade is null

       begin

          Set @ClausulaWhere1 = 'idade = ' + (select idade from cv_CandidatoDados)

       end

     

    If @sexo is null

       begin

          Set @ClausulaWhere2 = 'Sexo=' + (Select sexto from cv_CandidatoDados)
       end
      

    Select * FROM SUA TABELA WHERE @CLAUSULAWHERE1 + ' AND ' + @CLAUSULAWHERE2
    end

     

    Basicamente essa é a estrutura, boa sorte

    segunda-feira, 15 de janeiro de 2007 17:09
  •  

     vc. pode fazer assim

     

     create proc nome @par1 int = null , @par2 int =null

     as

      Select .. from tabela where (campo1 = isnull(par1,campo1)) or (campo2 = isnull(@par2,campo2))

     

    Abs

     

    terça-feira, 16 de janeiro de 2007 09:08
  • Não consegui fazer a questão dos valores informados ou não.



    Olá, eu precisa de um exemplo de uma proc onde o usuário irá entrar com várias informações como o exemplo abaixo.


    Idade
    Sexo
    Estado Civil
    Região
    Indicação

    O usuário pode preencher alguns dados, outros não, seria optativo, mas o que ele preencher eu devo buscar.

    Muito obrigado

    terça-feira, 16 de janeiro de 2007 12:33
  • no exemplo que eu passeo troque o or pelo and, deve funcionar qualquer coisa retorne.

     

    Abs;

    terça-feira, 16 de janeiro de 2007 13:27