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:
CREATE PROCEDURE [dbo].[PeriodosFiltro]
(
@codProduto INT -- Código do Projeto
,@codcliente VARCHAR(14) --
,@cpf VARCHAR(14) INT -- Código do Projeto
,@filtroanosmeses VARCHAR(1000)--Filtro com anos e meses concatenados
)
----No campo filtroanosmeses receberei os parâmetros assim: "2002|12,2003|06,2015|02"'
Como fazer um loop para trazer o select filtrando as datas
SELECT [Pedido]
,[Name]
,[ValorTotal]
,[Description]
,[Details]
,[Selloff]
,[ClienteId]
, [DataPedido]
FROM [dbo].[Pedido]
where DataPedido== @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 ? )
@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.
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?
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?
CREATE or replace PACKAGE Testpackage AS
TYPE Areas_t is table of VARCHAR(100) index by BINARY_INTEGER;
PROCEDURE TESTPROCEDURE(Areas IN Areas_t);
END Testpackage;