Usuário com melhor resposta
Pesquisa No Banco SQL Server

Pergunta
-
Boa noite Pessoal.
Estou desenvolvendo uma rotina em C#, onde estou precisando acessar o banco de dados usando um intervalo de números.
ou seja, um intervalo De Ate. Existe alguma forma de enviar esse intervalo para dentro da minha procedure e carregar o meu datatable apenas com os registros que estão dentro do intervalo?
Eu não sei se me fiz entender?
Garibaldo
Respostas
-
A mensagem está sendo emitida porque as variáveis @NumeroCTeInicial e @NumeroCTeFinal não foram declaradas no escopo da procedure, e nem são parâmetros da mesma. Tente desta forma:
CREATE PROCEDURE CONHECIMENTOS_FILIALSERIECONHECINTERVALO @Filial_Origem int , @Serie_Conhec varchar(3) , @NumeroCTeInicial int , @NumeroCTeFinal int AS BEGIN SET NOCOUNT ON; SELECT * FROM tbConhecimentos WHERE Filial_Origem = @Filial_Origem AND Serie_Conhec = @Serie_Conhec AND Numero_Conhec between @NumeroCTeInicial AND @NumeroCTeFinal END GO
Note que apenas reescrevi seu script modificando os parâmetros da procedure.
Se precisar, envia sua pergunta novamente.
- Editado Rodrigo CdS sábado, 30 de maio de 2015 01:11
- Sugerido como Resposta Claudinei Nascimento sábado, 30 de maio de 2015 02:27
- Marcado como Resposta Garibaldo Luis Guerreiro Chaves sábado, 30 de maio de 2015 02:30
Todas as Respostas
-
Olá, Garibaldo!
Existe sim. Segue um link de um tutorial do Macoratti de como fazer isto do início ao fim, bem completo. Basicamente, você utilizará o camando:
sqlCommand.Parameters.AddWithValue("@parametroDe", valorParametroDe); sqlCommand.Parameters.AddWithValue("@parametroAte", valorParametroAte);
Na sua procedure, você utilizará estes parâmetros no between por exemplo:
[..] where Numero between @parametroDe and @parametroAte
Se precisar de mais informações sobre isto, envie sua pergunta.
Bom trabalho!
- Editado Rodrigo CdS sexta-feira, 29 de maio de 2015 22:31
-
Boa noite Rodrigo:Montei a minha procedure da seguinte forma:
DROP PROCEDURE CONHECIMENTOS_FILIALSERIECONHECINTERVALO
GO
CREATE PROCEDURE CONHECIMENTOS_FILIALSERIECONHECINTERVALO(
@Filial_Origem INT,
@Serie_Conhec VARCHAR(3),
@Numero_Conhec INT
)
AS
BEGIN
SELECT * FROM tbConhecimentos WHERE Filial_Origem = @Filial_Origem
AND Serie_Conhec = @Serie_Conhec
AND Numero_Conhec between @NumeroCTeInicial AND @NumeroCTeFinal
END
GO
porém, está dando um erro no momento de gerar:
Must declare the scalar variable "@NumeroCTeInicial".
Eu estou fazendo algo errado?
-
A mensagem está sendo emitida porque as variáveis @NumeroCTeInicial e @NumeroCTeFinal não foram declaradas no escopo da procedure, e nem são parâmetros da mesma. Tente desta forma:
CREATE PROCEDURE CONHECIMENTOS_FILIALSERIECONHECINTERVALO @Filial_Origem int , @Serie_Conhec varchar(3) , @NumeroCTeInicial int , @NumeroCTeFinal int AS BEGIN SET NOCOUNT ON; SELECT * FROM tbConhecimentos WHERE Filial_Origem = @Filial_Origem AND Serie_Conhec = @Serie_Conhec AND Numero_Conhec between @NumeroCTeInicial AND @NumeroCTeFinal END GO
Note que apenas reescrevi seu script modificando os parâmetros da procedure.
Se precisar, envia sua pergunta novamente.
- Editado Rodrigo CdS sábado, 30 de maio de 2015 01:11
- Sugerido como Resposta Claudinei Nascimento sábado, 30 de maio de 2015 02:27
- Marcado como Resposta Garibaldo Luis Guerreiro Chaves sábado, 30 de maio de 2015 02:30
-