Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leindo

Não consigo passar paramentro datetime para SP.

Recommended Posts

essa é a chamada da SP:

 

EXEC Consulta  1,1,'2007-04-01 00:00:00','2007-07-09 23:59:59'

 

declaração da SP:

CREATE PROCEDURE Consulta 	@codTabelaTemporaria SMALLINT, 		@flagTitulosNaoPagos SMALLINT,		@dataInicio DATETIME,	@dataFim DATETIME AS

parte da SP onde está utilizando o campo

SET @varWhere =  @varWhere + 'AS DATETIME) between ' + @dataInicio + ' AND ' + @dataFim + ' ) '

esse é o erro...

"Syntax error converting datetime from character string."

 

Alguém sabe o que devo fazer?

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi esse trecho de código, parece que esta faltando o CAST...verifica esse tópico sobre datas: http://forum.imasters.com.br/index.php?showtopic=224454qq.coisa posta mais do código que esta com errot+

Então é a primeira sp da minha vida, logo, estou perdido.alterei o codigo e agora está com esse erro que não consigo resolver.Syntax error converting the varchar value ' WHERE (( CAST( (Case When CondPagto.Base = 'DDL' Then DateAdd(d, CondPagto.PrazoPrimeiraParcela + 1 , (Case When RegraComGeral.BasePagto = 'L' Then FinTitulos.DataVencimento ELSE DadosFiscais.DataEmissao End) ) When CondPagto.Base = 'DDD' Then DateAdd(d, CondPagto.PrazoPrimeiraParcela, (Case When RegraComGeral.BasePagto = 'L' Then FinTitulos.DataV...
CREATE PROCEDURE Consulta 	@codTabelaTemporaria SMALLINT, 		@flagTitulosNaoPagos SMALLINT,		@dataInicio DATETIME,	@dataFim DATETIME AS DECLARE @varCampos VARCHAR(8000)DECLARE @varFrom   VARCHAR(8000)DECLARE @varJoin   VARCHAR(8000)DECLARE @varWhere  VARCHAR(8000)DECLARE @varOrder  VARCHAR(8000)DECLARE @nDias	   VARCHAR(40)DECLARE @varDataBase VARCHAR(150)	SET @varCampos =  'SELECT DISTINCT PedidoItem.Codigo as CodPedidoItem, '	SET @varCampos =  @varCampos + ' Comissoes.Codigo as CodComissoes, '	SET @varCampos =  @varCampos + ' Comissoes.BaseCalculoOver, '	SET @varCampos =  @varCampos + ' ComissoesItem.*, '	SET @varCampos =  @varCampos + ' RegraComGeral.CodCondPagto, '	SET @varCampos =  @varCampos + ' RegraComGeral.BasePagto, '	SET @varCampos =  @varCampos + ' CondPagto.PrazoPrimeiraParcela, '	SET @varCampos =  @varCampos + ' CondPagto.Base, '	SET @varCampos =  @varCampos + ' DadosFiscaisItens.Codigo as CodDadosFiscaisItens, '	SET @varCampos =  @varCampos + ' DadosFiscaisItens.Quantidade * DadosFiscaisItens.BasePreco as QuantNota, '	SET @varCampos =  @varCampos + ' PedidoHeader.Serie as SeriePedido, '	SET @varCampos =  @varCampos + ' PedidoHeader.Numero as NumeroPedido, '	SET @varCampos =  @varCampos + ' PedidoHeader.DataEmissao as DataEmissaoPedido, '	SET @varCampos =  @varCampos + ' DadosFiscais.Serie as SerieNota, '	SET @varCampos =  @varCampos + ' DadosFiscais.Numero as NumeroNota, '	SET @varCampos =  @varCampos + ' DadosFiscais.DataEmissao as DataEmissaoNota, '	SET @varCampos =  @varCampos + ' DadosFiscaisItens.Descricao as DescricaoNota, '	SET @varCampos =  @varCampos + ' DadosFiscaisItens.OrdemItemSeq as ItemNota, '	SET @varCampos =  @varCampos + ' DadosFiscaisItens.ValorUnitario as ValorUnitarioNota, '	SET @varCampos =  @varCampos + ' DadosFiscaisItens.AliqIpi, '	/* GetStringValorPedido */	SET @varCampos =  @varCampos + ' (SELECT SUM(PedidoItemEntregaValor.ValorUnitario * PedidoItemEntregaValor.Quantidade / PedidoItemValor.BaseUnidade) FROM PedidoItem as PedidoItemValor INNER JOIN PedidoItemEntrega as PedidoItemEntregaValor ON PedidoItemEntregaValor.CodPedidoItem = PedidoItemValor.Codigo WHERE PedidoItemValor.Codigo = PedidoItem.Codigo) as ValorPedido '	/* GetStringQuantPedido */	SET @varCampos =  @varCampos + ' (SELECT SUM(PedidoItemEntregaQuant.Quantidade) FROM PedidoItemEntrega as PedidoItemEntregaQuant WHERE PedidoItemEntregaQuant.CodPedidoItem = PedidoItem.Codigo) as QuantPedido '	/* GetStringValorNota(TRUE) */	SET @varCampos =  @varCampos + ' (SELECT Sum(Quantidade * ValorUnitario) FROM DadosFiscaisItens as DadosFiscaisItensValor WHERE DadosFiscaisItensValor.Codigo = DadosFiscaisItens.Codigo) AS ValorItemNotaFiscal '	/* GetStringSelectDataMovimentoSelect(TRUE, $flagTitulosNaoPagos) */	SET @nDias = 'CondPagto.PrazoPrimeiraParcela'	IF @flagTitulosNaoPagos = 1 BEGIN		SET @varDataBase = ' (Case When RegraComGeral.BasePagto = ''L'' Then FinTitulos.DataVencimento ELSE DadosFiscais.DataEmissao End) '	END	ELSE BEGIN		SET @varDataBase = ' (Case When RegraComGeral.BasePagto = ''L'' Then FinLiquidacaoTitulos.DataPagamento ELSE DadosFiscais.DataEmissao End) '	END	SET @varCampos =  @varCampos + '(Case When CondPagto.Base = ''DDL'' Then DateAdd(d, ' + @nDias + ' + 1 , ' + @varDataBase + ') '	SET @varCampos =  @varCampos + ' When CondPagto.Base = ''DDD'' Then DateAdd(d, ' + @nDias + ', ' + @varDataBase + ')'	SET @varCampos =  @varCampos + ' When CondPagto.Base = ''DFD'' Then (Case When Day(' + @varDataBase + ') <= 20 Then DateAdd(d, 10 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End) '	SET @varCampos =  @varCampos + ' When CondPagto.Base = ''DFS'' Then (Case When Day(' + @varDataBase + ') <= 28 Then DateAdd(d, 7 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End ) '	SET @varCampos =  @varCampos + ' When CondPagto.Base = ''DFQ'' Then (Case When Day(' + @varDataBase + ') <= 15 Then DateAdd(d, 15 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End ) '	SET @varCampos =  @varCampos + ' When CondPagto.Base = ''DFM'' Then DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) '	SET @varCampos =  @varCampos + ' When CondPagto.Base = ''TDS'' Then (Case When Day(' + @varDataBase + ') <= 28 Then DateAdd(d, 7 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End ) '	SET @varCampos =  @varCampos + ' When CondPagto.Base = ''TDM'' Then (Case When Day(' + @varDataBase + ') <= ' + @nDias + ' Then DateAdd(d, Day(' + @varDataBase + '), ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + '), ' + @varDataBase + ')) End ) End) AS DataMovimento '	/* GetStringBasePagamento */	SET @varCampos =  @varCampos +	'(Case When RegraComGeral.BasePagto = ''L'' Then FinLiquidacaoTitulos.ValorPagamento ELSE ( ' 		/* GetStringValorNota(FALSE) */		 SET @varCampos =  @varCampos + ' (SELECT Sum(Quantidade * ValorUnitario) FROM DadosFiscaisItens as DadosFiscaisItensValor WHERE DadosFiscaisItensValor.Codigo = DadosFiscaisItens.Codigo) '	SET @varCampos =  @varCampos +	' ) End) as BasePagamento'	/* GetStringValorTotalNota(TRUE) */	SET @varCampos =  @varCampos + ' (SELECT Sum(Quantidade * ValorUnitario) FROM DadosFiscaisItens as DadosFiscaisValorNota WHERE DadosFiscaisValorNota.CodDadosFiscais = DadosFiscais.Codigo) as ValorTotalNotaFiscal '	SET @varCampos =  @varCampos + ' FinLiquidacaoTitulos.ValorPagamento, '	SET @varCampos =  @varCampos + ' ComissoesItemAbat.CodComissaoItemAbat, '	SET @varCampos =  @varCampos + ' Nomes.NomePrincipal as NomeAgente, '	SET @varCampos =  @varCampos + ' NomesCliente.NomePrincipal as NomeCliente, '	SET @varCampos =  @varCampos + ' FinFatura.NumeroFatura, '	SET @varCampos =  @varCampos + ' FinFatura.Serie as SerieFatura, '	SET @varCampos =  @varCampos + ' FinTitulos.Codigo as CodTitulo, '	SET @varCampos =  @varCampos + ' FinTitulos.Valor as ValorTitulo, '	SET @varCampos =  @varCampos + ' FinTitulos.DataVencimento as VencimentoTitulo, '	SET @varCampos =  @varCampos + ' FinLiquidacaoTitulos.DataPagamento, '	SET @varCampos =  @varCampos + ' Unidades.Nome as Unidade, '	SET @varCampos =  @varCampos + ' FinTitulos.Ordem as OrdemTitulo '	/* GetFromSelectComissoes(TRUE) */	SET @varFrom = 'FROM Comissoes '	SET @varJoin = ' INNER JOIN ComissoesItem ON Comissoes.Codigo = ComissoesItem.CodComissao '	SET @varJoin = @varJoin + ' INNER JOIN PedidoItem ON Comissoes.CodPedidoItem = PedidoItem.Codigo '	SET @varJoin = @varJoin + ' INNER JOIN PedidoItemEntrega ON PedidoItemEntrega.CodPedidoItem = PedidoItem.Codigo '	SET @varJoin = @varJoin + ' INNER JOIN WebComissoesConsulta ON WebComissoesConsulta.CodComissao = Comissoes.Codigo AND WebComissoesConsulta.CodUsuario = ' 		SET @varJoin = @varJoin + ' @codTabelaTemporaria '	SET @varJoin = @varJoin + ' LEFT JOIN PedidoHeader ON PedidoHeader.Codigo = PedidoItem.CodPedidoHeader '	SET @varJoin = @varJoin + ' LEFT JOIN RegraComGeral ON RegraComGeral.Codigo = ComissoesItem.CodRegra '	SET @varJoin = @varJoin + ' LEFT JOIN CondPagto ON RegraComGeral.CodCondPagto = CondPagto.Codigo '	SET @varJoin = @varJoin + ' LEFT JOIN ComissoesItemAbat ON ComissoesItemAbat.CodComissaoItem = ComissoesItem.Codigo '	SET @varJoin = @varJoin + ' LEFT JOIN PedidoItemEntregaxNotaFiscalItem ON PedidoItemEntregaxNotaFiscalItem.CodPedidoItemEntrega = PedidoItemEntrega.Codigo '	SET @varJoin = @varJoin + ' LEFT JOIN DadosFiscaisItens ON PedidoItemEntregaxNotaFiscalItem.CodNotaFiscalItem = DadosFiscaisItens.Codigo '	SET @varJoin = @varJoin + ' LEFT JOIN DadosFiscais ON DadosFiscais.Codigo = DadosFiscaisItens.CodDadosFiscais '	SET @varJoin = @varJoin + ' LEFT JOIN Unidades ON Unidades.Codigo = DadosFiscaisItens.CodUnidade '	SET @varJoin = @varJoin + ' LEFT JOIN NotasFiscais ON NotasFiscais.CodDadosFiscais = DadosFiscais.Codigo '	SET @varJoin = @varJoin + ' LEFT JOIN FinFatura ON FinFatura.Codigo = NotasFiscais.CodFatura  '	SET @varJoin = @varJoin + ' LEFT JOIN FinTitulos ON FinFatura.Codigo = FinTitulos.CodFatura '	SET @varJoin = @varJoin + ' LEFT JOIN FinLiquidacaoTitulos ON FinLiquidacaoTitulos.CodTitulo = FinTitulos.Codigo AND (FinLiquidacaoTitulos.Status = 0 OR FinLiquidacaoTitulos.Status IS NULL) '	SET @varJoin = @varJoin + ' LEFT JOIN Nomes ON Nomes.Codigo = ComissoesItem.CodAgente '	SET @varJoin = @varJoin + ' LEFT JOIN Nomes as NomesCliente ON NomesCliente.Codigo = DadosFiscais.CodNomePrincipal '	SET @varWhere = ' WHERE (( CAST( '		/* GetStringSelectDataMovimentoSelect(FALSE, $flagTitulosNaoPagos) */		IF @flagTitulosNaoPagos = 1 BEGIN			SET @varDataBase = ' (Case When RegraComGeral.BasePagto = ''L'' Then FinTitulos.DataVencimento ELSE DadosFiscais.DataEmissao End) '		END		ELSE BEGIN			SET @varDataBase = ' (Case When RegraComGeral.BasePagto = ''L'' Then FinLiquidacaoTitulos.DataPagamento ELSE DadosFiscais.DataEmissao End) '		END		SET @varWhere =  @varWhere + '(Case When CondPagto.Base = ''DDL'' Then DateAdd(d, ' + @nDias + ' + 1 , ' + @varDataBase + ') '		SET @varWhere =  @varWhere + ' When CondPagto.Base = ''DDD'' Then DateAdd(d, ' + @nDias + ', ' + @varDataBase + ')'		SET @varWhere =  @varWhere + ' When CondPagto.Base = ''DFD'' Then (Case When Day(' + @varDataBase + ') <= 20 Then DateAdd(d, 10 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End) '		SET @varWhere =  @varWhere + ' When CondPagto.Base = ''DFS'' Then (Case When Day(' + @varDataBase + ') <= 28 Then DateAdd(d, 7 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End ) '		SET @varWhere =  @varWhere + ' When CondPagto.Base = ''DFQ'' Then (Case When Day(' + @varDataBase + ') <= 15 Then DateAdd(d, 15 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End ) '		SET @varWhere =  @varWhere + ' When CondPagto.Base = ''DFM'' Then DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) '		SET @varWhere =  @varWhere + ' When CondPagto.Base = ''TDS'' Then (Case When Day(' + @varDataBase + ') <= 28 Then DateAdd(d, 7 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End ) '		SET @varWhere =  @varWhere + ' When CondPagto.Base = ''TDM'' Then (Case When Day(' + @varDataBase + ') <= ' + @nDias + ' Then DateAdd(d, Day(' + @varDataBase + '), ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + '), ' + @varDataBase + ')) End ) End) '	SET @varWhere =  @varWhere + 'AS DATETIME) between CAST(@dataInicio AS VARCHAR(20)) AND CAST(@dataFim AS VARCHAR(20)) ) '	SET @varWhere =  @varWhere + ' OR (CodRegra = 0 AND TipoTaxa = 1 AND ComissoesItem.CodComissao IN (SELECT CodComissao FROM WebComissoesConsulta WHERE CodUsuario = ' + @codTabelaTemporaria + '))) '	IF @flagTitulosNaoPagos = 1 BEGIN		SET @varWhere =  @varWhere + ' AND FinLiquidacaoTitulos.DataPagamento IS NULL '	END	SET @varOrder = 'ORDER BY CodAgente DESC, '		/* GetStringSelectDataMovimentoSelect(FALSE, $flagTitulosNaoPagos) */		IF @flagTitulosNaoPagos = 1 BEGIN			SET @varDataBase = ' (Case When RegraComGeral.BasePagto = ''L'' Then FinTitulos.DataVencimento ELSE DadosFiscais.DataEmissao End) '		END		ELSE BEGIN			SET @varDataBase = ' (Case When RegraComGeral.BasePagto = ''L'' Then FinLiquidacaoTitulos.DataPagamento ELSE DadosFiscais.DataEmissao End) '		END		SET @varOrder =  @varOrder + '(Case When CondPagto.Base = ''DDL'' Then DateAdd(d, ' + @nDias + ' + 1 , ' + @varDataBase + ') '		SET @varOrder =  @varOrder + ' When CondPagto.Base = ''DDD'' Then DateAdd(d, ' + @nDias + ', ' + @varDataBase + ')'		SET @varOrder =  @varOrder + ' When CondPagto.Base = ''DFD'' Then (Case When Day(' + @varDataBase + ') <= 20 Then DateAdd(d, 10 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End) '		SET @varOrder =  @varOrder + ' When CondPagto.Base = ''DFS'' Then (Case When Day(' + @varDataBase + ') <= 28 Then DateAdd(d, 7 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End ) '		SET @varOrder =  @varOrder + ' When CondPagto.Base = ''DFQ'' Then (Case When Day(' + @varDataBase + ') <= 15 Then DateAdd(d, 15 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End ) '		SET @varOrder =  @varOrder + ' When CondPagto.Base = ''DFM'' Then DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) '		SET @varOrder =  @varOrder + ' When CondPagto.Base = ''TDS'' Then (Case When Day(' + @varDataBase + ') <= 28 Then DateAdd(d, 7 - Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + ') + ' + @nDias + ', ' + @varDataBase + ')) End ) '		SET @varOrder =  @varOrder + ' When CondPagto.Base = ''TDM'' Then (Case When Day(' + @varDataBase + ') <= ' + @nDias + ' Then DateAdd(d, Day(' + @varDataBase + '), ' + @varDataBase + ') Else DateAdd(m, 1, DateAdd(d, -Day(' + @varDataBase + '), ' + @varDataBase + ')) End ) End) '			SET @varOrder = @varOrder + ', DadosFiscais.Numero, FinTitulos.Ordem '	EXEC (@varCampos + @varFrom + @varJoin + @varWhere + @varOrder)

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi esse where, caso você esteja tentando fazer um where dinamico veja estes posts: http://forum.imasters.com.br/index.php?showtopic=223859

http://forum.imasters.com.br/index.php?showtopic=220823

 

outra dica, teste os comandos separadamente, isto ajudara a encontrar o problema

 

se tiver dúvidas com algum comando veja na documentação oficial: http://msdn2.microsoft.com/en-us/library/a...42(SQL.80).aspx

 

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.