Usuário com melhor resposta
filtros numa procedure

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
ENDESSA 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
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- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 6 de setembro de 2012 18:58
Todas as Respostas
-
-
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.brSe 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. -
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- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 6 de setembro de 2012 18:58