none
Procedure com between RRS feed

  • 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!

    quarta-feira, 15 de julho de 2015 19:48

Respostas

Todas as Respostas

  • Olá Duducolussi,

    Talvez seu problema seja semelhante ao apresentado nesta thread.

    Link

    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
    quarta-feira, 15 de julho de 2015 19:57
  • Deleted
    quarta-feira, 15 de julho de 2015 20:01
  • 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

    quarta-feira, 15 de julho de 2015 20:03
  • Mesmo desta forma persiste o erro!
    quarta-feira, 15 de julho de 2015 20:17
  • Deleted
    quarta-feira, 15 de julho de 2015 20:21
  • É que na aplicação local está demorando para executar toda a tarefa que tenho que fazer.
    quarta-feira, 15 de julho de 2015 20:42
  • 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

    quarta-feira, 15 de julho de 2015 21:35
  • 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

    quinta-feira, 16 de julho de 2015 13:14
  • Deleted
    • Marcado como Resposta Duducolussi quinta-feira, 16 de julho de 2015 14:11
    quinta-feira, 16 de julho de 2015 13:23
  • 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
    quinta-feira, 16 de julho de 2015 15:19