Expliciete Cursor versus Impliciete Cursor
Als het gaat om databases, is een cursor een besturingsstructuur waarmee u door de records in een database kunt gaan. Een cursor biedt een mechanisme om een naam toe te wijzen aan een SQL-selectinstructie en kan vervolgens worden gebruikt om de informatie binnen die SQL-instructie te manipuleren. Impliciete cursors worden automatisch gemaakt en gebruikt telkens wanneer een Select-instructie wordt uitgegeven in PL / SQL, wanneer er geen expliciet gedefinieerde cursor is. Expliciete cursors worden, zoals de naam al aangeeft, expliciet gedefinieerd door de ontwikkelaar. In PL / SQL is een expliciete cursor eigenlijk een benoemde query die is gedefinieerd met behulp van de cursor van het sleutelwoord.
Wat is Implicit Cursor?
Impliciete cursors worden automatisch gemaakt en gebruikt door Oracle telkens wanneer een select-instructie wordt uitgegeven. Als een impliciete cursor wordt gebruikt, voert het databasebeheersysteem (DBMS) de bewerkingen openen, ophalen en sluiten automatisch uit. Impliciete cursors mogen alleen worden gebruikt met SQL-instructies die één rij retourneren. Als de SQL-instructie meer dan één rij retourneert, zal het gebruik van een impliciete cursor een fout introduceren. Een impliciete cursor wordt automatisch gekoppeld aan elke DML-instructie (Data Manipulation Language), namelijk INSERT, UPDATE en DELETE-instructies. Ook wordt een impliciete cursor gebruikt om SELECT INTO-instructies te verwerken. Bij het ophalen van gegevens met behulp van impliciete cursors kan de NO_DATA_FOUND-uitzondering worden verhoogd wanneer de SQL-instructie geen gegevens retourneert. Bovendien kunnen impliciete cursors TOO_MANY_ROWS uitzonderingen maken wanneer de SQL-instructie meer dan één rij retourneert.
Wat is Expliciete cursor?
Zoals eerder vermeld, zijn expliciete cursors query's die zijn gedefinieerd met een naam. Een expliciete cursor kan worden gezien als een aanwijzer naar een set records en de aanwijzer kan binnen de set records naar voren worden verplaatst. Expliciete cursors bieden de gebruiker de volledige controle over het openen, sluiten en ophalen van gegevens. Ook kunnen meerdere rijen worden opgehaald met behulp van een expliciete cursor. Expliciete cursors kunnen ook parameters nemen, net als elke functie of procedure, zodat de variabelen in de cursor kunnen worden gewijzigd elke keer dat deze wordt uitgevoerd. Bovendien kunt u met expliciete cursors een hele rij ophalen in een PL / SQL-recordvariabele. Wanneer een expliciete cursor wordt gebruikt, moet deze eerst worden gedeclareerd met behulp van een naam. Cursorattributen zijn toegankelijk via de naam die aan de cursor wordt gegeven. Na het declareren moet de cursor eerst worden geopend. Vervolgens kan ophalen worden gestart. Als er meerdere rijen moeten worden opgehaald, moet de ophaalbewerking binnen een lus worden uitgevoerd. Ten slotte moet de cursor gesloten zijn.
Verschil tussen Expliciete Cursor en Impliciete Cursor
Het belangrijkste verschil tussen de impliciete cursor en de expliciete cursor is dat een expliciete cursor expliciet moet worden gedefinieerd door een naam op te geven, terwijl impliciete cursors automatisch worden gemaakt wanneer u een SELECT-instructie opgeeft. Bovendien kunnen meerdere rijen worden opgehaald met behulp van expliciete cursors, terwijl impliciete cursors slechts één rij kunnen ophalen. Ook NO_DATA_FOUND en TOO_MANY_ROWS uitzonderingen worden niet verhoogd bij het gebruik van expliciete cursors, in tegenstelling tot impliciete cursors. In wezen zijn impliciete cursors kwetsbaarder voor gegevensfouten en bieden ze minder programmatische controle dan expliciete cursors. Impliciete cursors worden ook beschouwd als minder efficiënt dan expliciete cursors.