Curseur explicite vs curseur implicite
En ce qui concerne les bases de données, un curseur est une structure de contrôle qui permet de traverser les enregistrements dans une base de données. Un curseur fournit un mécanisme pour attribuer un nom à une instruction SQL Select, puis il peut être utilisé pour manipuler les informations dans cette instruction SQL. Les curseurs implicites sont automatiquement créés et utilisés chaque fois qu'une instruction sélectionnée est publiée en PL / SQL, alors qu'il n'y a pas de curseur explicitement défini. Les curseurs explicites, comme son nom l'indique, sont définis explicitement par le développeur. Dans PL / SQL, un curseur explicite est en fait une requête nommée définie à l'aide du curseur de mot clé.
Qu'est-ce que le curseur implicite?
Les curseurs implicites sont automatiquement créés et utilisés par Oracle chaque fois qu'une instruction sélectionnée est publiée. Si un curseur implicite est utilisé, le système de gestion de la base de données (SGBD) effectuera automatiquement les opérations ouvertes, approfondies et fermées. Les curseurs implicites ne doivent être utilisés qu'avec des instructions SQL qui renvoient une seule ligne. Si l'instruction SQL renvoie plus d'une ligne, l'utilisation d'un curseur implicite introduira une erreur. Un curseur implicite est automatiquement associé aux instructions de chaque langue de manipulation de données (DML), à savoir d'insérer, de mettre à jour et de supprimer les instructions. De plus, un curseur implicite est utilisé pour traiter la sélection des instructions. Lors de la récupération de données à l'aide de l'instruction implicite des curseurs implicites. De plus, les curseurs implicites peuvent lever des exceptions trop_many_rows lorsque l'instruction SQL renvoie plus d'une ligne.
Qu'est-ce que le curseur explicite?
Comme mentionné précédemment, les curseurs explicites sont des requêtes définies à l'aide d'un nom. Un curseur explicite peut être considéré comme un pointeur vers un ensemble d'enregistrements et le pointeur peut être avancé dans l'ensemble des enregistrements. Les curseurs explicites fournissent à l'utilisateur le contrôle complet sur l'ouverture, la fermeture et la récupération des données. De plus, plusieurs lignes peuvent être récupérées à l'aide d'un curseur explicite. Les curseurs explicites peuvent également prendre des paramètres comme n'importe quelle fonction ou procédure afin que les variables du curseur puissent être modifiées à chaque fois qu'il est exécuté. De plus, les curseurs explicites vous permettent de récupérer une ligne entière dans une variable d'enregistrement PL / SQL. Lorsque vous utilisez un curseur explicite, il doit d'abord être déclaré à l'aide d'un nom. Les attributs du curseur sont accessibles en utilisant le nom donné au curseur. Après avoir déclaré, le curseur doit être ouvert en premier. Puis la récupération peut être démarrée. Si plusieurs lignes doivent être récupérées, l'opération de récupération doit être effectuée à l'intérieur d'une boucle. Enfin, le curseur doit être fermé.
Différence entre le curseur explicite et le curseur implicite
La principale différence entre le curseur implicite et le curseur explicite est qu'un curseur explicite doit être défini explicitement en fournissant un nom tandis que les curseurs implicites sont automatiquement créés lorsque vous publiez une déclaration sélectionnée. De plus, plusieurs lignes peuvent être récupérées à l'aide de curseurs explicites tandis que les curseurs implicites ne peuvent récupérer qu'une seule ligne. De plus, les exceptions ne sont pas élevées lors de l'utilisation de curseurs explicites, par opposition aux exceptions. Essentiellement, les curseurs implicites sont plus vulnérables aux erreurs de données et fournissent moins de contrôle programmatique que les curseurs explicites. De plus, les curseurs implicites sont considérés comme moins efficaces que les curseurs explicites.