none
filtros numa procedure RRS feed

  • Pergunta

  • Olá a todos.

    Nem sei se o título da pergunta foi coerente.

    Vou me fazer entender com exemplo:

    CREATE TABLE T1 (
    ID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    NOME VARCHAR(20),
    SOBRENOME VARCHAR(20)
    )


    INSERT INTO T1 (NOME, SOBRENOME) VALUES ('PEDRO','PAULO')
    INSERT INTO T1 (NOME, SOBRENOME) VALUES ('CARLOS','HENRIQUE')
    INSERT INTO T1 (NOME, SOBRENOME) VALUES ('LUIZ','GUSTAVO')

    CREATE PROCEDURE SP_T1
    (
    @NOME VARCHAR(20),
    @SOBRENOME VARCHAR(20)
    )
    AS
    BEGIN
    SELECT ID, NOME, SOBRENOME
    FROM T1
    WHERE NOME = @NOME
    AND SOBRENOME  = @SOBRENOME

    END

    ESSA PROCEDURE VA RETORNAR SE EU PREENCHER AS VARIÁVEIS COM DADOS VÁLIDOS:

    EXEC SP_T1 @NOME = 'PEDRO', @SOBRENOME = 'PAULO'

    DIGAMOS QUE EU PESQUISE COLOCANDO VALOR APENAS  NA PRIMEIRA VARIÁVEL

    EXEC SP_T1 @NOME = 'PEDRO', @SOBRENOME = '%'

    TEM ALGUMA FORMA DA SEGUNDA EXECUÇÃO RETORNAR O PRIMEIRO REGISTRO? EM OUTRAS PALAVRAS, RETORNAR O RESULTADO SEM NECESSIDADE DE TODAS AS VARIÁVEIS ESTAREM PREENCHIDAS?

    AGRADEÇO AJUDA.


    Rico CS


    • Editado Rico.cs quarta-feira, 5 de setembro de 2012 14:11
    quarta-feira, 5 de setembro de 2012 14:10

Respostas

  • Rico

    Segue uma maneira....

    CREATE PROCEDURE SP_T1
    (
    @NOME VARCHAR(20),
    @SOBRENOME VARCHAR(20)=null
    )
    AS
    BEGIN
    SELECT ID, NOME, SOBRENOME
    FROM T1
    WHERE NOME = @NOME
    AND SOBRENOME  = isnull(@SOBRENOME,sobrenome)
    END
    EXEC SP_T1 @NOME = 'PEDRO'


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 5 de setembro de 2012 17:39
    Moderador

Todas as Respostas

  • Rico.cs

    Acho que é só você colocar 

    WHERE NOME = @NOME
    OR SOBRENOME  = @SOBRENOME

    Ou Seja, se ele encontrar alguém com o @NOME, o @SOBRENOME não precisa estar certo.

    quarta-feira, 5 de setembro de 2012 15:09
  • Por que uma procedure pra isso?

    Seria muito melhor uma view na qual utilizaria o campo Nome ou o campo Sobrenome para as pesquisas, de acordo com a necessidade.


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 5 de setembro de 2012 16:46
  • Rico

    Segue uma maneira....

    CREATE PROCEDURE SP_T1
    (
    @NOME VARCHAR(20),
    @SOBRENOME VARCHAR(20)=null
    )
    AS
    BEGIN
    SELECT ID, NOME, SOBRENOME
    FROM T1
    WHERE NOME = @NOME
    AND SOBRENOME  = isnull(@SOBRENOME,sobrenome)
    END
    EXEC SP_T1 @NOME = 'PEDRO'


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 5 de setembro de 2012 17:39
    Moderador