none
Procedure - variável com like RRS feed

  • Pergunta

  • Olá a todos.

    Estou com uma dúvida com relação a like com variáveis numa procedure. Vou explicar melhor com exemplo usando o northwind:

    Só para ilustração... 

    criando uma procedure:

    CREATE PROCEDURE sp_teste (
    @nome varchar(60) = N'%'
    )
    as
    begin
    SELECT CódigoDoProduto, NomeDoProduto
    FROM Produtos
    where NomeDoProduto like @nome
    end

    quando executo colocando o nome do produto inteiro ele retorna o produto:

    exec sp_teste @nome  = 'chai';

    CódigoDoProduto NomeDoProduto
    1                         Chai

    mas quando executo assim: exec sp_teste @nome  = 'cha'. Essa última execução seria o equivalente a like '%cha%'.

    Alguém sabe como fazer isso?

    Agradeço a ajuda de vocês.


    • Movido Gustavo Maia Aguiar quarta-feira, 15 de agosto de 2012 17:28 (De:Gerenciamento, Configuração, Instalação, e Segurança)
    quarta-feira, 15 de agosto de 2012 14:08

Respostas

  • Olá SmrBkp,

    tenta assim:

    CREATE PROCEDURE sp_teste (
    @nome varchar(60) 
    )
    as
    begin
    SELECT CódigoDoProduto, NomeDoProduto
    FROM Produtos
    where NomeDoProduto like '%' + @nome + '%'
    end

    Se ajudou, marca como resposta para ajudarmos outras pessoas com a mesma dúvida.
    • Editado Andre_Bel quarta-feira, 15 de agosto de 2012 15:01
    • Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 15 de agosto de 2012 15:32
    • Marcado como Resposta Harley Araujo sexta-feira, 17 de agosto de 2012 13:28
    quarta-feira, 15 de agosto de 2012 15:00
  • Obrigado pela dica Andre_Bel.

    Consegui fazer  dessa maneira:

    USE AdventureWorks2008R2;
    GO


    create PROCEDURE FindEmployee @EmpLName varchar(20)
    AS
    SELECT @EmpLName ='%' + @EmpLName + '%';
    SELECT p.FirstName, p.LastName, a.City
    FROM Person.Person p JOIN Person.Address a ON p.BusinessEntityID = a.AddressID
    WHERE p.LastName LIKE @EmpLName;
    GO


    EXEC FindEmployee @EmpLName = 'Abe';
    GO

    Peguei a idéia desse link: http://msdn.microsoft.com/pt-br/library/ms179859.aspx

    Valeu!! Fica a dica a quem tiver a mesma dúvida!


    SMRBKP

    • Marcado como Resposta Harley Araujo sexta-feira, 17 de agosto de 2012 13:28
    quarta-feira, 15 de agosto de 2012 16:58

Todas as Respostas

  • Olá SmrBkp,

    tenta assim:

    CREATE PROCEDURE sp_teste (
    @nome varchar(60) 
    )
    as
    begin
    SELECT CódigoDoProduto, NomeDoProduto
    FROM Produtos
    where NomeDoProduto like '%' + @nome + '%'
    end

    Se ajudou, marca como resposta para ajudarmos outras pessoas com a mesma dúvida.
    • Editado Andre_Bel quarta-feira, 15 de agosto de 2012 15:01
    • Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 15 de agosto de 2012 15:32
    • Marcado como Resposta Harley Araujo sexta-feira, 17 de agosto de 2012 13:28
    quarta-feira, 15 de agosto de 2012 15:00
  • Obrigado pela dica Andre_Bel.

    Consegui fazer  dessa maneira:

    USE AdventureWorks2008R2;
    GO


    create PROCEDURE FindEmployee @EmpLName varchar(20)
    AS
    SELECT @EmpLName ='%' + @EmpLName + '%';
    SELECT p.FirstName, p.LastName, a.City
    FROM Person.Person p JOIN Person.Address a ON p.BusinessEntityID = a.AddressID
    WHERE p.LastName LIKE @EmpLName;
    GO


    EXEC FindEmployee @EmpLName = 'Abe';
    GO

    Peguei a idéia desse link: http://msdn.microsoft.com/pt-br/library/ms179859.aspx

    Valeu!! Fica a dica a quem tiver a mesma dúvida!


    SMRBKP

    • Marcado como Resposta Harley Araujo sexta-feira, 17 de agosto de 2012 13:28
    quarta-feira, 15 de agosto de 2012 16:58