Verschil tussen Expliciete Cursor en Implicit Cursor

Anonim

Expliciete Cursor vs Implicit Cursor

Als het gaat om databases, is een cursor een controle structuur die het mogelijk maakt om de records in een database door te geven. Een cursor biedt een mechanisme om een ​​naam toe te wijzen aan een SQL select statement en vervolgens kan het worden gebruikt om de informatie te manipuleren binnen die SQL-instructie. Impliciete cursors worden automatisch gecreëerd en gebruikt elke keer dat een Select-verklaring wordt uitgegeven in PL / SQL, wanneer er geen expliciet gedefinieerde cursor is. Expliciete cursors, zoals de naam suggereert, worden expliciet gedefinieerd door de ontwikkelaar. In PL / SQL is een expliciete cursor eigenlijk een genaamd query gedefinieerd met behulp van de sleutelwoord cursor.

Wat is een impliciete cursor?

Impliciete cursors worden automatisch gemaakt en gebruikt door Oracle telkens een selecteerde verklaring wordt uitgegeven. Als een impliciete cursor wordt gebruikt, zal het DBMS (Database Management System) de openingen automatisch openen, ophalen en sluiten. Impliciete cursors mogen alleen worden gebruikt met SQL-instructies die een enkele rij terugkeren. Als de SQL-instructie meer dan één rij retourneert, wordt een fout geïntroduceerd met behulp van een impliciete cursor. Een impliciete cursor wordt automatisch geassocieerd met elke DML-verklaring (Data Manipulation Language), namelijk INSERT, UPDATE en DELETE statements. Ook wordt een impliciete cursor gebruikt om SELECT INTO statements te verwerken. Bij het ophalen van data met behulp van impliciete cursors, kan NO_DATA_FOUND uitzondering worden opgeheven wanneer de SQL-instructie geen gegevens geeft. Bovendien kunnen impliciete cursors TOO_MANY_ROWS uitzonderingen verhogen wanneer de SQL-instructie meer dan één rij retourneert.

Wat is een expliciete cursor?

Zoals eerder vermeld, worden expliciete cursors query's gedefinieerd met een naam. Een expliciete cursor kan worden beschouwd als een aanwijzer op een set records en de aanwijzer kan naar voren worden gebracht binnen de set records. Expliciete cursors geven de gebruiker de volledige controle over het openen, sluiten en ophalen van gegevens. Ook kunnen meerdere rijen worden gehaald met behulp van een expliciete cursor. Expliciete cursors kunnen ook parameters zoals elke functie of procedure uitvoeren, zodat de variabelen in de cursor elke keer kunnen worden gewijzigd. Bovendien kunnen expliciete cursors u een hele rij ophalen in een PL / SQL-recordvariabele. Als u een expliciete cursor gebruikt, moet u eerst een naam aangeven. Cursor attributen zijn toegankelijk met de naam die aan cursor wordt gegeven. Na het verklaren moet de cursor eerst geopend worden. Vervolgens kan het halen beginnen. Als meerdere rijen moeten worden gehaald, moet de ophalen in 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 te geven terwijl impliciete cursors automatisch worden gemaakt wanneer u geeft een geselecteerde verklaring af.Bovendien kunnen meerdere rijen worden gehaald met expliciete cursors, terwijl impliciete cursors alleen een enkele rij kunnen halen. Ook NO_DATA_FOUND en TOO_MANY_ROWS uitzonderingen worden niet verhoogd bij gebruik van expliciete cursors, in tegenstelling tot impliciete cursors. In wezen zijn impliciete cursors meer kwetsbaar voor gegevensfouten en bieden ze minder programmatische controle dan expliciete cursors. Ook impliciete cursors worden beschouwd als minder efficiënt dan expliciete cursors.