sql >> Database >  >> RDS >> Oracle

Wat is het verschil tussen expliciete en impliciete cursors in Oracle?

Een impliciete cursor is een cursor die "automatisch" voor u wordt gemaakt door Oracle wanneer u een query uitvoert. Het is eenvoudiger te coderen, maar heeft last van

  • inefficiëntie (de ANSI-standaard specificeert dat het twee keer moet worden opgehaald om te controleren of er meer dan één record is)
  • kwetsbaarheid voor gegevensfouten (als u ooit twee rijen krijgt, ontstaat er een TOO_MANY_ROWS-uitzondering)

Voorbeeld

SELECT col INTO var FROM table WHERE something;

Een expliciete cursor is er een die u zelf maakt. Er is meer code voor nodig, maar het geeft meer controle - u kunt bijvoorbeeld gewoon openen, ophalen en sluiten als u alleen het eerste record wilt en het niet uitmaakt of er andere zijn.

Voorbeeld

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


  1. Hoe Tomcat te configureren om verbinding te maken met MySQL

  2. PLSQL Invoegen in met subquery en terugkerende clausule

  3. Toegang krijgen tot een RowDataPacket-object

  4. Hoe de MySQL-versie te controleren?