none
UPDATE PROCEDURE SAINDO ERRADO RRS feed

  • Pergunta

  • Pessoal boa tarde socorro

    estou com um erro de em uma das minha procedures, onde ela precisa inserir um sequencial de 50 numeros 

    um exemplo numero ramal existente , 3350 ..a minha procedure precisa add mais 40 ramais , então deveria inserir

    3351 3352 3353 ....e assim ate os 50 novos ramais

    mas em vez disso esta inserindo 50 vezes o mesmo ramal.

    tipo

    3350

    3350

    3350

    3350

    o codigo seria esse 

                             

    UPDATE  minhabase.DBO.TB_TEL_minhatabela
    SET QT_RAMAIS = QT_RAMAIS + @QT_RAMAIS
        ,RA_FINAL  =  @NUMERO_FINAL 
    WHERE PK_ENTRONCAMENTO = @PK_ENTRONCAMENTO



    DECLARE @QUANTIDADE INT       = @QT_RAMAIS;
    DECLARE @NUMERO_TEMP INT       = substring(@NUMERO,0,5);
    DECLARE @NUMERO_FINAL_TEMP INT 

    WHILE @QUANTIDADE > 0
     BEGIN
       SET @NUMERO_INICIAL_CADASTRO = @NUMERO_INICIAL_CADASTRO  
       SET @NUMERO_TEMP  = substring(@NUMERO,0,5)

       if(len(@NUMERO_INICIAL_CADASTRO)=3) 
      begin 
    set  @NUMERO_INICIAL_CADASTRO = concat('0',@NUMERO_INICIAL_CADASTRO)
      end  
            if(len(@NUMERO_INICIAL_CADASTRO)=2) 
      begin
    set  @NUMERO_INICIAL_CADASTRO = concat('00',@NUMERO_INICIAL_CADASTRO)
      end
            if(len(@NUMERO_INICIAL_CADASTRO)=1)
      begin
    set @NUMERO_INICIAL_CADASTRO = concat('000',@NUMERO_INICIAL_CADASTRO)
      end

        SET @NUMERO_TEMP = concat(@NUMERO_TEMP,@NUMERO_INICIAL_CADASTRO)

        INSERT INTO minhabase.DBO.TB_TEL_fones
        (ID_UNID, DDD, NUMERO, EXPIRADO, TIPO_LINHA, USR_CADASTRO, DATA_CONTRATACAO, TP_ENTRONCAMENTO, CODIGO_TELE)  
        VALUES(@ID_UNID, @DDD, @NUMERO_TEMP, 0, 1, @USR_SOLICITANTE, @DT_CONTRATACAO, 1, @CODIGO_TELE) 

       DECLARE @ID_FONE_TEMP INT = scope_identity();
    --( SELECT TOP 1 ID_FONE  
       -- FROM telecom_consolidado.dbo.TB_TEL_013_FONE_CAIXA 
       --     WHERE DDD = @DDD 
       --       AND NUMERO = @NUMERO_TEMP 
       --       AND DATA_DESCONTRATACAO IS NULL )

        declare @PGO_TEMP int = (SELECT top 1 [PGO]  FROM [minhabase[dbo].[TB_TEL_042_PGO] where ddd=@DDD)


        INSERT INTO minhabae.DBO.TB_minhatabela
    (ID_FONE, ID_UNID, DDD, NUMERO, FK_ENTRONCAMENTO, TP_ENTRONCAMENTO, CONTRATO, DATA_CONTRATACAO, CODIGO_TELE, DATA_INCLUSAO, NU_PGO) 
    VALUES(@ID_FONE_TEMP,@ID_UNID, @DDD, @NUMERO_TEMP, @PK_ENTRONCAMENTO, 1, @CONTRATO, @DT_CONTRATACAO, @CODIGO_TELE, GETDATE(), @PGO_TEMP)       

     SET @QUANTIDADE = @QUANTIDADE-1
     END

    segunda-feira, 28 de setembro de 2020 23:54

Todas as Respostas

  • Pessoal boa tarde socorro

    estou com um erro de em uma das minha procedures, onde ela precisa inserir um sequencial de 50 numeros 

    um exemplo numero ramal existente , 3350 ..a minha procedure precisa add mais 40 ramais , então deveria inserir

    3351 3352 3353 ....e assim ate os 50 novos ramais

    mas em vez disso esta inserindo 50 vezes o mesmo ramal.

    tipo

    3350

    3350

    3350

    3350

    o codigo seria esse 

                             

    UPDATE  minhabase.DBO.TB_TEL_minhatabela
    SET QT_RAMAIS = QT_RAMAIS + @QT_RAMAIS
        ,RA_FINAL  =  @NUMERO_FINAL 
    WHERE PK_ENTRONCAMENTO = @PK_ENTRONCAMENTO



    DECLARE @QUANTIDADE INT       = @QT_RAMAIS;
    DECLARE @NUMERO_TEMP INT       = substring(@NUMERO,0,5);
    DECLARE @NUMERO_FINAL_TEMP INT 

    WHILE @QUANTIDADE > 0
     BEGIN
       SET @NUMERO_INICIAL_CADASTRO = @NUMERO_INICIAL_CADASTRO  
       SET @NUMERO_TEMP  = substring(@NUMERO,0,5)

       if(len(@NUMERO_INICIAL_CADASTRO)=3) 
      begin 
    set  @NUMERO_INICIAL_CADASTRO = concat('0',@NUMERO_INICIAL_CADASTRO)
      end  
            if(len(@NUMERO_INICIAL_CADASTRO)=2) 
      begin
    set  @NUMERO_INICIAL_CADASTRO = concat('00',@NUMERO_INICIAL_CADASTRO)
      end
            if(len(@NUMERO_INICIAL_CADASTRO)=1)
      begin
    set @NUMERO_INICIAL_CADASTRO = concat('000',@NUMERO_INICIAL_CADASTRO)
      end

        SET @NUMERO_TEMP = concat(@NUMERO_TEMP,@NUMERO_INICIAL_CADASTRO)

        INSERT INTO minhabase.DBO.TB_TEL_fones
        (ID_UNID, DDD, NUMERO, EXPIRADO, TIPO_LINHA, USR_CADASTRO, DATA_CONTRATACAO, TP_ENTRONCAMENTO, CODIGO_TELE)  
        VALUES(@ID_UNID, @DDD, @NUMERO_TEMP, 0, 1, @USR_SOLICITANTE, @DT_CONTRATACAO, 1, @CODIGO_TELE) 

       DECLARE @ID_FONE_TEMP INT = scope_identity();
    --( SELECT TOP 1 ID_FONE  
       -- FROM telecom_consolidado.dbo.TB_TEL_013_FONE_CAIXA 
       --     WHERE DDD = @DDD 
       --       AND NUMERO = @NUMERO_TEMP 
       --       AND DATA_DESCONTRATACAO IS NULL )

        declare @PGO_TEMP int = (SELECT top 1 [PGO]  FROM [minhabase[dbo].[TB_TEL_042_PGO] where ddd=@DDD)


        INSERT INTO minhabae.DBO.TB_minhatabela
    (ID_FONE, ID_UNID, DDD, NUMERO, FK_ENTRONCAMENTO, TP_ENTRONCAMENTO, CONTRATO, DATA_CONTRATACAO, CODIGO_TELE, DATA_INCLUSAO, NU_PGO) 
    VALUES(@ID_FONE_TEMP,@ID_UNID, @DDD, @NUMERO_TEMP, @PK_ENTRONCAMENTO, 1, @CONTRATO, @DT_CONTRATACAO, @CODIGO_TELE, GETDATE(), @PGO_TEMP)       

     SET @QUANTIDADE = @QUANTIDADE-1
     END

    Dr.HKan,

    Este não é mesmo post publicado anteriormente?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 30 de setembro de 2020 17:50