none
Vários Updates em um único comando RRS feed

  • Pergunta

  •  

    Prezados colegas,

     

    Estou iniciando minhas atividades com comandos SQL e gostaria de saber se é possível obter auxílio com relação a criação de um comando para executar uma série de updates simultâneamente.

    Atualmente tenho que digitar o seguinte comando diversas vezes e este procedimento está desgastante.

     

    Comando:

     

    update e081itp set usu_custobase = 4,60, prebass=5,46 where datini = to_date('01/04/2008','dd/mm/yyyy') and codpro=('1140312101')

     

    No comando acima atualizo na tabela e081ipt as variáveis usu_custobase, prebass, codpro e datini sendo que destas variáveis somente a datini é fixa, pois corresponde a data de vigência da tabela de preços as demais variam de acordo com o código do produto.

     

    Conto com o auxílio de vocês.

     

    Abraços!

    Marcelo

     

     

    terça-feira, 8 de abril de 2008 19:30

Todas as Respostas

  • M.Silva,

     

    Veja se este exemplo ajuda:

     

    Code Snippet

    Create Procedure P_AtualizarDados @CodProduto VarChar(20),

                                      @Valor Float,

                                      @Valor2 Float,

                                      @Data DateTime

    As

     Begin

      update e081itp

      set usu_custobase = @Valor,

      prebass = @Valor2

      where datini = @Data

      and codpro = @CodProduto

     End

     

     

     

     

    terça-feira, 8 de abril de 2008 19:40

  • Prezado Junior,

    Obrigado pela prontidão em responder a minha dúvida como havia falado sou iniciante em comandos SQL e gostaria de saber como faço para "linkar" esta procedure com a minha planilha em excel com os comandos, atualmente a minha planilha encontra-se da seguinte forma:

    update e081itp set usu_custobase =4,19,prebas=6,06  where datini = to_date('01/04/2008','dd/mm/yyyy') and codpro in (1110101302)
    update e081itp set usu_custobase =4,19,prebas=6,06  where datini = to_date('01/04/2008','dd/mm/yyyy') and codpro in (1110101402)
    update e081itp set usu_custobase =8,38,prebas=11,67 where datini = to_date('01/04/2008','dd/mm/yyyy') and codpro in (1110103050)
    update e081itp set usu_custobase =6,03,prebas=8,53  where datini = to_date('01/04/2008','dd/mm/yyyy') and codpro in (1110103520)
    update e081itp set usu_custobase =5,19,prebas=7,41  where datini = to_date('01/04/2008','dd/mm/yyyy') and codpro in (1110104102)
    update e081itp set usu_custobase =7,12,prebas=9,99  where datini = to_date('01/04/2008','dd/mm/yyyy') and codpro in (1110104201)
    update e081itp set usu_custobase =7,54,prebas=10,55 where datini = to_date('01/04/2008','dd/mm/yyyy') and codpro in (1110104301)
    update e081itp set usu_custobase =5,44,prebas=7,74  where datini = to_date('01/04/2008','dd/mm/yyyy') and codpro in (1110105040)

    At,
    Marcelo
    terça-feira, 8 de abril de 2008 20:13
  • Marcelo,

     

    Linkar com o Excel!!!

     

    Vou precisar pensar um pouco, desculpe-me não havia entendido sua dúvida.

    terça-feira, 8 de abril de 2008 20:17
  • Obrigado mais uma vez...

    Então de tanto pensar em uma forma de agilizar este processo, o método que "bolamos" para amenizar o desgaste foi este... colocar os valores em várias linhas, dar control C e Control V em cada uma delas, ou seja repetir o procedimento aproximadamente 300 vezes...

    De qualquer forma gostaria de reiterar mais uma vez meus agradecimentos e continuo no aguardo!!! Caso consiga uma solução para este problema serei muito grato.

    Abraço!
    Marcelo
    terça-feira, 8 de abril de 2008 20:24
  • Boa tarde Júnior!!!

     

    Sem querer te perturbar, mas já o fazendo... Você acha que é possível uma solução para este meu problema?

     

    Seria possível ordenar estes dados em uma planilha e criar um comando em SQL para buscar esses dados e atualizar as as variáveis da tabela?

     

    Abraço!

     

    Marcelo

    quarta-feira, 9 de abril de 2008 18:03
  • Bom dia Marcelo,

     

    Pelo que vejo, você tem uma planilha com dados e precisa importar esses dados para uma tablea.

    Como o próprio Junior já informou, criando aquela procedure você pode atualizar registro a registro facilmente.


    Mas acredito que para seu problema você pode organizar esses dados numa planilha e importar o arquivo ou caso necessario, usar o OPENROWSET

     

    Code Snippet

    insert into tabela select * from OpenRowset('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=caminho_da_planilha.xls', 'select * from Sheet$')

     

     

    Pode obter maiores informações sobre o uso do OPENROWSET:

    http://www.sql-server-helper.com/tips/read-import-excel-file-p01.aspx

     

    Usando o DTS:

    http://www.ramosdainformatica.com.br/files/Apostilas/Mts.pdf

    Criando um linke server com o Excel:

    http://www.linhadecodigo.com.br/Artigo.aspx?id=1569

     

    Espero ter ajudado.

     

    Bruno B.

     

    quinta-feira, 10 de abril de 2008 12:34