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

Qual é a diferença entre cursores explícitos e implícitos no Oracle?


Um cursor implícito é aquele criado "automaticamente" para você pelo Oracle quando você executa uma consulta. É mais simples de codificar, mas sofre de
  • ineficiência (o padrão ANSI especifica que deve buscar duas vezes para verificar se há mais de um registro)
  • vulnerabilidade a erros de dados (se você receber duas linhas, isso gera uma exceção TOO_MANY_ROWS)

Exemplo
SELECT col INTO var FROM table WHERE something;

Um cursor explícito é aquele que você mesmo cria. É preciso mais código, mas dá mais controle - por exemplo, você pode simplesmente abrir-buscar-fechar se quiser apenas o primeiro registro e não se importar se houver outros.

Exemplo
DECLARE   
  CURSOR cur IS SELECT col FROM table WHERE something; 
BEGIN
  OPEN cur;
  FETCH cur INTO var;
  CLOSE cur;
END;