Stored Procedure e Diferentes Tipos de Dados

22/01/2007

0

Bom Dia Pessoal!

Tenho uma stored procedure que faz uma consulta simples ao banco através do like no nome do produto que eh a q segue abaixo ....


ALTER PROCEDURE dbo.SelectProdutoByNome
@Nome nvarchar(100)
AS
SELECT ProdutoId, Nome, Fornecedores.FornecedorId, Fornecedores.RazaoSocial, Categorias.CategoriaId, Categorias.CategoriaDesc,
Tamanhos.TamanhoId, Tamanhos.TamanhoDesc, QteEstoque, QteAChegar, EmLinha, ValorCusto,
AliqMarkup, ValorPraticado, CodigoBarra, ProdutoIdMaster FROM Produtos
JOIN Fornecedores ON (Fornecedores.FornecedorId = Produtos.FornecedorId)
JOIN Categorias ON (Categorias.CategoriaId = Produtos.CategoriaId)
JOIN Tamanhos ON (Tamanhos.TamanhoId = Produtos.TamanhoId)
WHERE UPPER(Nome) LIKE @Nome);
/* SET NOCOUNT ON */
RETURN

soh que.. meu problema eh o seguinte... eu nao queria que toda hora o usuario acessasse o bd realizando uma nova consulta quando ele quiser consultar pelo id do produto por exemplo
ou... seja.. tem como verificar se eh possível converter esse parametro @Nome para inteiro e entao acrescentar um OR talvez para buscar por Nome do produto e por Id?
Existe essa possibilidade?

algo do tipo....

ALTER PROCEDURE dbo.SelectProdutoByNome
@Nome nvarchar(100)
AS
SELECT ProdutoId, Nome, Fornecedores.FornecedorId, Fornecedores.RazaoSocial, Categorias.CategoriaId, Categorias.CategoriaDesc,
Tamanhos.TamanhoId, Tamanhos.TamanhoDesc, QteEstoque, QteAChegar, EmLinha, ValorCusto,
AliqMarkup, ValorPraticado, CodigoBarra, ProdutoIdMaster FROM Produtos
JOIN Fornecedores ON (Fornecedores.FornecedorId = Produtos.FornecedorId)
JOIN Categorias ON (Categorias.CategoriaId = Produtos.CategoriaId)
JOIN Tamanhos ON (Tamanhos.TamanhoId = Produtos.TamanhoId)
WHERE UPPER(Nome) LIKE @Nome
OR Nome = cast(@Nome as int);
/* SET NOCOUNT ON */
RETURN

sendo que na sp acima quando eu passo a string logicamente ela dah erro pq nao conseguiu convert a string passada para inteiro

Grato,
Abraços


Akp_junior

Akp_junior

Responder

Posts

23/01/2007

Psergio.p

Porque você não coloca dois parametros de entrada na stored procedure e manda NULL no parametro não usado?

exemplo:
CREATE PROCEDURE <SUA_PROC>, @Nome VARCHAR(10),
@ID INT
AS
BEGIN
IF @ID IS NULL
...
END
ELSE
...
END


Responder

24/01/2007

Akp_junior

Pois eh irmao... poderia ser sim... soh q o problema q eu queria contornar eh o seguinte....

imagine q eu tenho um botao procurar e um textbox

eu nao sei se o dado q vai vir se eh um inteiro ou uma string.. entao eu gostaria de saber se como trazer os dados com os dois entendeu?

para nao provocar varias idas e vindas no banco...

eh uma aplicado winforms mas q eu gostaria de depois transformar em smartclient... entao... queria leve.... entendeu?.. soh por isso....


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar