Quantidade de linhas afetadas por UPDATE, DELETE e INSERT
Tudo bem Willians ?
Existe uma maneira fácil de eu saber quantos registros foram alterados por um UPDATE, sem que eu tenha que fazer um SELECT para isso ?
Jorge
Opa, tudo bem por aqui Jorge ! Espero que por aí também esteja.
Então, existe sim uma maneira de verificar isso. Uilize o SQL%ROWCOUNT. Abaixo um exemplo:
-- Criando a tabela
CREATE TABLE teste
(
codigo NUMBER
,descricao VARCHAR2(2000)
)
/
Table TESTE created.
-- Inserindo dados INSERT INTO teste VALUES (1, 'DESCRICAO 1') / 1 row inserted. INSERT INTO teste VALUES (2, 'DESCRICAO 2') / 1 row inserted. -- Testando o SQL%ROWCOUNT BEGIN UPDATE teste SET descricao = 'TESTE DE UPDATE'; DBMS_OUTPUT.put_line('Linhas atualizadas : ' || SQL%ROWCOUNT); END; Linhas atualizadas : 2
Simples assim ! Funciona também para DELETE e INSERT.
BEGIN DELETE FROM teste; DBMS_OUTPUT.put_line('Linhas deletadas : ' || SQL%ROWCOUNT); END; Linhas deletadas : 2 BEGIN INSERT INTO teste VALUES (1, 'DESCRICAO 1'); DBMS_OUTPUT.put_line('Linhas inseridas : ' || SQL%ROWCOUNT); END;
Linhas inseridas : 1
Agora, se você precisar recuperar as informações alteradas, deletadas ou inseridas, sugiro que dê uma olhada na cláusula RETURNING. Eu escrevi um artigo aqui no GPO sobre essa cláusula. Você pode conferir aqui !
Espero ter ajudado !

Formado em Gestão em Tecnologia da Informação, com sólidos conhecimentos em SQL, PL/SQL, Oracle Forms, Reports e E-Business Suite (AP,AR e GL).
Foi durante 3 anos gerente de tecnologia de grande empresa do setor de saúde, e atualmente atua como Analista de Sistema Sênior na Scania Latin America e também como Diretor-fundador do GPO (Grupo de Profissionais Oracle).