Usuário com melhor resposta
Procedure com between

Pergunta
-
Estou tentando criar uma view com as informações do selec.
Esse código está dentro da procedure:
SELECT @texto = 'CREATE VIEW vw_todos_naoRenovados AS'
SELECT @texto = @texto + ' SELECT DISTINCT cli.idCliente, cont.idContrato, cli.nome, cli.contato, cli.cnpj, cli.cpf, cli.ddd, cli.telefone, cli.email, vend.vendedor, cont.valor, cont.vigenciaInicio, cont.vigenciaFim, cid.cidade, cid.uf, cli.endereco, cli.inadimplente, login.login, cont.contrato'
SELECT @texto = @texto + ' from contratos cont, clientes cli, vendedores vend, cidades cid, login as login'
SELECT @texto = @texto + ' WHERE'
SELECT @texto = @texto + ' cont.vigenciaFim BETWEEN '' + @_inicio + '' AND '' + @_fim + '' and cont.idVendedor = vend.idVendedor'
SELECT @texto = @texto + ' and cli.idCidade=cid.idCidade'
SELECT @texto = @texto + ' and login.idCliente = cli.idCliente'
SELECT @texto = @texto + ' and cont.idCliente = cli.idCliente'
SELECT @texto = @texto + ' and vend.externo =''n'''
SELECT @texto = @texto + ' AND cli.inadimplente =''n'''
Quando faço a execução não apresenta erros.Mas quando vou fazer um select na view da este erro:
Conversion failed when converting date and/or time from character string. Severity 16
Essas são as formas que tento executar a procedure:
EXEC menu_vendas_todos_naoRenovados2 '2015-01-14', '2015-07-10'
EXEC menu_vendas_todos_naoRenovados2 '2015/01/14', '2015/07/10'Obrigado!
Respostas
-
Deleted
- Marcado como Resposta Duducolussi quinta-feira, 16 de julho de 2015 14:11
Todas as Respostas
-
Olá Duducolussi,
Talvez seu problema seja semelhante ao apresentado nesta thread.
Espero ter ajudado.
Atenciosamente
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Editado Marcos SJ quarta-feira, 15 de julho de 2015 19:58
-
-
Boa tarde,
Duducolussi, experimente fazer um teste da seguinte forma:
EXEC menu_vendas_todos_naoRenovados2 '20150114', '20150710'
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
-
-
-
-
Acho que seria melhor você explicar a tarefa que está tentando executar para que todos possam analisar a questão de forma completa e então tentar postar alguma sugestão.
Assinatura: http://www.imoveisemexposicao.com.br
-
Essa é a procedure que estava trabalhando antes com todo o processo.
Mas estou com problemas na parte do select que destaquei logo abaixo.
O campo é inteiro e quero fazer um select IN nele.
ALTER PROC [dbo].[menu_vendas_teste]
@inicio as DATE,
@fim AS DATE
AS
DECLARE @atual AS VARCHAR(100)
DECLARE @maior AS INT
DECLARE @id_cliente AS INT
DECLARE @cont_nr AS INT = 0
DECLARE @cont_r AS INT = 0
DECLARE @cont_total AS INT = 0
DECLARE @SQL AS NVARCHAR(4000)
DECLARE @temp AS NVARCHAR(4000)
BEGIN
DECLARE cur1 CURSOR FOR SELECT cli.idCliente, cont.contrato
from contratosSys cont, clientes cli, vendedores vend, cidades cid, login logs
where
cont.vigenciaFim BETWEEN @inicio AND @fim
and cont.idVendedor = vend.idVendedor
and cli.idCidade=cid.idCidade
and logs.idCliente = cli.idCliente
and cont.idCliente = cli.idCliente
and vend.externo = 'n'
order by vend.vendedor, cli.nome
OPEN cur1
FETCH NEXT FROM cur1 INTO @id_cliente, @atual
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE cur2 CURSOR FOR select MAX(contrato) from contratosSys where idCliente = @id_cliente
OPEN cur2
FETCH NEXT FROM cur2 INTO @maior
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (@maior = @atual)
BEGIN
SET @cont_nr = @cont_nr + 1
SET @temp = @temp + ',' + @atual
END
IF (@maior > @atual)
BEGIN
SET @cont_r = @cont_r + 1
END
FETCH NEXT FROM cur2 INTO @maior
END
CLOSE cur2
DEALLOCATE cur2
FETCH NEXT FROM cur1 INTO @id_cliente, @atual
END
CLOSE cur1
DEALLOCATE cur1
SET @cont_total = @cont_nr + @cont_r
SELECT * FROM contratosSYS WHERE CAST(contrato AS VARCHAR) IN ( @temp )
SELECT @cont_total, @cont_r, @cont_nr
END
GO
-
Deleted
- Marcado como Resposta Duducolussi quinta-feira, 16 de julho de 2015 14:11
-
Boa tarde,
Poderia tentar converter o campo
SELECT @texto = @texto + ' cont.vigenciaFim BETWEEN '' + CONVERT(DATETIME, @_inicio , 102)) + '' AND '' + CONVERT(DATETIME, @_fim, 102)) + '' and cont.idVendedor = vend.idVendedor'
Att
- Sugerido como Resposta Danilo Telles quinta-feira, 16 de julho de 2015 15:27