none
INSERT com sequencia RRS feed

  • Discussão Geral

  • Pessoal boa tarde

    preciso fazer na minha base um insert de numero de telefone com varios ramais

    tipo 32324000 ate 3232500 , como fasso para que seja inserido na base sequencialmente

    tipo algo :

    insert  into  

    select ...

     id_numero   ddd     numero     estado     cidade    controle    ativo ( colunas da tabela)

    obrigado pelo apoio

    sexta-feira, 14 de maio de 2021 15:17

Todas as Respostas

  • Boa tarde,

    Segue uma sugestão para testes utilizando uma CTE recursiva para gerar a sequencia de números:

    declare @Numero int = 32324000;
    declare @NumeroFim int = 32325000;
    
    with CTE_Rec as
    (
        select @Numero as Numero
        union all
        select Numero + 1 from CTE_Rec where Numero < @NumeroFim
    )
    
    select Numero from CTE_Rec
    option (maxrecursion 0)

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 14 de maio de 2021 17:28
  • Oi

    fiquei sem entender e onde entra o nome da minha tabela e as conlunas do inserte????

    segunda-feira, 17 de maio de 2021 14:17
  • Não consegui entender exatamente de onde virão os valores a serem inseridos com as informações do seu post inicial mas o Insert deve ser adicionado antes do Select. Ex:

    declare @Numero int = 32324000;
    declare @NumeroFim int = 32325000;
    
    with CTE_Rec as
    (
        select @Numero as Numero
        union all
        select Numero + 1 from CTE_Rec where Numero < @NumeroFim
    )
    
    insert into MinhaTabela (ColunaA, ColunaB, Numero, ColunaC)
        select 'ValorColunaA', 'ValorColunaB', Numero, 'ValorColunaC' from CTE_Rec
        option (maxrecursion 0)

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 17 de maio de 2021 14:49
  • Oi, olha como fiicou, mas da um seguinte erro

    messagem 319, nivel 15, estado 1, linha 5

    incorretct systax near the keyword 'with', if this satatement  is a common table  expression, an xmlnamespace clause or a change tracking context clause , the previous satatemente ....

    o innsert ficou assim

    declare @numero int   = '23234500'

    declare @numeroFim int ='23234540'

    with CTE_REC AS

    ( SELECT @Numero as numero
      union all
      select numero + 1
      from  CTE_REC
      WHERE NUMERO < @numerofIM )

      insert into [minha base].[dbo].[TB_telefones] (
           [ID_UNID]
          ,[DDD]
          ,[NUMERO]
          ,[ATIVO]
          ,[TIPO]
          ,[RESPONSAVEL]
          ,[DATA_INCLUSAO]
          ,[TP_JUNTA]
          ,[CODIGO]
          ,[VALOR]
          ,ATIVO)

    SELECT 123
          ,96
          ,[NUMERO]
          ,0                        as    [EXPIRADO]
          ,1
          ,'joao'                AS [REPONSAVEL]
          ,'2020-10-21 00:00:00'    AS [DATA_INCLUSAO]
          ,[1234]
          ,[666]
          ,[1]
          ,0

    from CTE_REC
    option (maxrecursion 0)

    segunda-feira, 17 de maio de 2021 16:47
  • O erro refere-se a ausência de ponto e virgula (;) na declaração das variáveis.

    declare @numero int   = '23234500';
    declare @numeroFim int ='23234540';

    segunda-feira, 17 de maio de 2021 17:44
  • olá,

    Deu super certo, obrigado, top .

    segunda-feira, 17 de maio de 2021 23:23