Oracle
 sql >> Database >  >> RDS >> Oracle

Qual è la differenza tra i cursori espliciti e impliciti in Oracle?

Un cursore implicito è uno creato "automaticamente" per te da Oracle quando esegui una query. È più semplice da codificare, ma soffre di

  • inefficienza (lo standard ANSI specifica che deve essere recuperato due volte per verificare se è presente più di un record)
  • vulnerabilità agli errori di dati (se si ottengono due righe, viene sollevata un'eccezione TOO_MANY_ROWS)

Esempio

SELECT col INTO var FROM table WHERE something;

Un cursore esplicito è quello che crei tu stesso. Richiede più codice, ma offre più controllo, ad esempio puoi semplicemente aprire-fetch-chiudere se vuoi solo il primo record e non ti interessa se ce ne sono altri.

Esempio

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