set serveroutput on
DECLARE
cursor cur_upd_marca is
select *,rowid
from marca;
BEGIN
for x in cur_upd_marca loop
x.cod_marca := ;
x.des_marca := 'Marca';
update marca
set des_marca = x.des_marca
where rowid = x.rowid;
if mod(cur_upd_marca%rowcount,5) = 0 then
commit;
end if;
end loop;
commit;
END;
Update com n registros utilizando loop FOR
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Qui, 04 Mar 2010 12:24 am
- Localização: SP
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Qui, 04 Mar 2010 12:24 am
- Localização: SP
Oracle 11gcristhianlor escreveu:Estou tentando realizar um update na tabela, onde será necessário atualizar 10 registros de uma só vez e, fazendo commit de 5 em 5 registros, porém não estou conseguindo atribuir estes valores de 1 a 10 na variável x.cod_marca. Alguma ideia de como implementar isso seguindo o código acima?set serveroutput on DECLARE cursor cur_upd_marca is select *,rowid from marca; BEGIN for x in cur_upd_marca loop x.cod_marca := ; x.des_marca := 'Marca'; update marca set des_marca = x.des_marca where rowid = x.rowid; if mod(cur_upd_marca%rowcount,5) = 0 then commit; end if; end loop; commit; END;
Win 10 Home
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Em vez de ROWCOUNT, você tem que usar ROWNUM.
Mas tem que colocar ele no SELECT, como se fosse um campo normal da tabela:
Outra forma é usar um contador numa variável.
Mas tem que colocar ele no SELECT, como se fosse um campo normal da tabela:
select m.*, rownum NUM, r.rowid from marca m;
DECLARE
cursor cur_upd_marca is
select *, rowid from marca;
vcontador number:=0;
BEGIN
for x in cur_upd_marca loop
x.des_marca := 'Marca';
vcontador := vcontador+1;
update marca
set des_marca = x.des_marca
where rowid = x.rowid;
if mod( vcontador, 5) = 0 then
commit;
end if;
end loop;
commit;
END;
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Qui, 04 Mar 2010 12:24 am
- Localização: SP
Dr. Gori, muito obrigado! Vou fazer o teste e retorno com o resultado.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante