GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Quantidade de linhas afetadas por UPDATE, DELETE e INSERT

Tudo bem Willians ?

Existe uma maneira fácil de eu sabe 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 !

Share

You may also like...

Deixe um comentário

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