Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle ROWID como parâmetro de função/procedimento


Do guia de conceito :

A principal desvantagem de um ROWID é que, embora seja normalmente estável, ele pode mudar em algumas circunstâncias:
  • A tabela é reconstruída (ALTER TABLE MOVE ...)
  • Exportar/Importar obviamente
  • Tabela de partição com ativação de movimento de linha

Uma chave primária identifica uma linha logicamente , você sempre encontrará a linha correta, mesmo após um delete+insert. Um ROWID identifica a linha fisicamente e não é tão persistente quanto uma chave primária.

Você pode usar ROWID com segurança em uma única instrução SQL, pois o Oracle garantirá que o resultado seja coerente, por exemplo, para remover duplicatas em uma tabela. Para garantir a segurança, sugiro que você use apenas o ROWID entre declarações quando você tem um bloqueio na linha (SELECT ... FOR UPDATE).

Do ponto de vista do desempenho, o acesso à chave primária é um pouco mais caro, mas você normalmente notará isso apenas se fizer muitos acessos a uma única linha. No entanto, se o desempenho for crítico, você geralmente pode obter mais benefícios nesse caso usando o processamento de conjunto do que o processamento de linha única com rowid. Em particular, se houver muitas viagens de ida e volta entre o banco de dados e o aplicativo, o custo do acesso à linha provavelmente será insignificante comparado ao custo das viagens de ida e volta.