Inquiridor
Vários Updates em um único comando

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
Todas as Respostas
-
M.Silva,
Veja se este exemplo ajuda:
Code SnippetCreate Procedure P_AtualizarDados @CodProduto VarChar(20),
@Valor Float,
@Valor2 Float,
@Data DateTime
As
Begin
update e081itp
set usu_custobase = @Valor,
where datini = @Data
End
-
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 -
-
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 -
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
-
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 OPENROWSETCode Snippetinsert 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.