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 !