Pular para o conteúdo

Quantidade de linhas afetadas por UPDATE, DELETE e INSERT

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 !

Sergio Willians

Sergio Willians

Sergio Willians é o fundador do GPO (Grupo de Profissionais Oracle) e possui quase 30 anos de experiência em tecnologias Oracle, sendo especialista em desenvolvimento Forms/Reports, PL/SQL e EBS (E-Business Suite) nos módulos Receivables, Payables e General Ledger. Atualmente trabalha na Scania Latin America, onde se dedica à área de integração de dados com Confluent Kafka. Sua paixão é compartilhar conhecimento com a comunidade Oracle, contribuindo para o crescimento e a excelência da plataforma.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress