Receber um parametro de períodos de datas concatenadas em procedure sql e aplicar em select
8 respostas
.netoraclebancodesenvolvimentosql
L
Lucia_Gabiatti
Preciso de uma ideia de vocês como passar um parâmetro que vem com várias datas concatenadas e aplicar no select na clausula WHERE.
Observação: por motivos de regras de negócio, tem que ser feito através de procedure mesmo.
A estrutura abaixo é só uma amostra:
CREATEPROCEDURE[dbo].[PeriodosFiltro](@codProdutoINT-- Código do Projeto,@codclienteVARCHAR(14)-- ,@cpfVARCHAR(14)INT-- Código do Projeto,@filtroanosmesesVARCHAR(1000)--Filtro com anos e meses concatenados)----No campo filtroanosmeses receberei os parâmetros assim: "2002|12,2003|06,2015|02"'ComofazerumloopparatrazeroselectfiltrandoasdatasSELECT[Pedido],[Name],[ValorTotal],[Description],[Details],[Selloff],[ClienteId],[DataPedido]FROM[dbo].[Pedido]whereDataPedido==@filtroanosmeses
Boa noite @Lucia_Gabiatti uma pergunta, o campo DataPedido da sua tabela Pedido é um datetime ou um varchar?
Caso seja um Varchar, qual o formato que ele se encontra ( 201202 ? )
Abraços
Max
L
Lucia_Gabiatti
Boa noite!!
é um varchar, se encontra no formato “01022012”
D
Dragoon1 like
@Lucia_Gabiatti já vem um problema ai onde um data deveria ser salva no formato date ou datetime, porque na hora de fazer procedimentos não precisa transformar isso aumenta o processamento e pioria o desempenho.
J
javaflex
Além de corrigir o tipo como @Dragoon falou, passe as datas como array, não faz essa gambiarra concatenando.
Se o banco não for esse, pesquise exemplo equivalente.
L
Lucia_Gabiatti1 like
De fato, Dragon. embora na tabela apresenta-se uma cenário simples, isso será aplicado num cenário fiscal muito complexo de uma empresa muito importante que relaciona diversas empresas em que a tabela de data de relatório infelizmente se encontra dessa forma e não posso mudar, mas é somente esse campo, existem outros campos datas nessa mesma tabela que se encontram no formato Date, mas esse se encontra no varchar(8). Portanto o que posso fazer realmente somente passar o campo como array de datas. Por favor, vc saberia me informar como esse parâmetro no c# como array para a procedure e como receber na procedure esse mesmo array para aplicar no select?
L
Lucia_Gabiatti1 like
Por favor, vc saberia me informar como esse parâmetro no c#(ADO.NET) como array para a procedure e como receber na procedure esse mesmo array para aplicar no select?