Curseur explicite vs curseur implicite
Lorsqu'il s'agit de bases de données, un curseur est une structure de contrôle qui permet de parcourir les enregistrements d'une base de données. Un curseur fournit un mécanisme pour attribuer un nom à une instruction de sélection SQL. Il peut ensuite être utilisé pour manipuler les informations contenues dans cette instruction SQL. Les curseurs implicites sont automatiquement créés et utilisés chaque fois qu'une instruction Select est émise en PL / SQL, lorsqu'il n'y a pas de curseur explicitement défini. Les curseurs explicites, comme leur nom l'indique, sont définis explicitement par le développeur. En PL / SQL, un curseur explicite est en fait une requête nommée définie à l'aide du mot clé curseur..
Qu'est-ce qu'un curseur implicite??
Les curseurs implicites sont automatiquement créés et utilisés par Oracle chaque fois qu'une instruction select est émise. Si un curseur implicite est utilisé, le système de gestion de base de données (SGBD) effectuera automatiquement les opérations d'ouverture, d'extraction et de fermeture. Les curseurs implicites ne doivent être utilisés qu'avec des instructions SQL qui renvoient une seule ligne. Si l'instruction SQL renvoie plusieurs lignes, l'utilisation d'un curseur implicite introduira une erreur. Un curseur implicite est automatiquement associé à chaque instruction DML (Data Manipulation Language), à savoir les instructions INSERT, UPDATE et DELETE. De plus, un curseur implicite est utilisé pour traiter les instructions SELECT INTO. Lors de l'extraction de données à l'aide de curseurs implicites, une exception NO_DATA_FOUND peut être déclenchée lorsque l'instruction SQL ne renvoie aucune donnée. De plus, les curseurs implicites peuvent générer des exceptions TOO_MANY_ROWS lorsque l'instruction SQL renvoie plusieurs lignes..
Qu'est-ce qu'un 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 sur un ensemble d'enregistrements et le pointeur peut être déplacé vers l'avant dans l'ensemble d'enregistrements. Les curseurs explicites fournissent à l'utilisateur le contrôle complet sur l'ouverture, la fermeture et la récupération des données. En outre, 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, de sorte que les variables contenues dans le curseur puissent être modifiées à chaque exécution. De plus, les curseurs explicites vous permettent d'extraire une ligne entière dans une variable d'enregistrement PL / SQL. Lorsque vous utilisez un curseur explicite, vous devez d’abord le déclarer en utilisant un nom. Les attributs du curseur sont accessibles via le nom attribué au curseur. Après la déclaration, le curseur doit être ouvert en premier. La récupération peut alors être lancée. Si plusieurs lignes doivent être extraites, l'opération d'extraction doit être effectuée à l'intérieur d'une boucle. Enfin, le curseur doit être fermé.
Différence entre les curseurs explicite et implicite
La principale différence entre le curseur implicite et le curseur explicite réside dans le fait qu'un curseur explicite doit être défini explicitement en fournissant un nom, tandis que les curseurs implicites sont automatiquement créés lorsque vous émettez une instruction select. En outre, plusieurs lignes peuvent être extraites à l'aide de curseurs explicites, tandis que les curseurs implicites ne peuvent extraire qu'une seule ligne. De plus, les exceptions NO_DATA_FOUND et TOO_MANY_ROWS ne sont pas déclenchées lors de l'utilisation de curseurs explicites, contrairement aux curseurs implicites. En substance, les curseurs implicites sont plus vulnérables aux erreurs de données et fournissent moins de contrôle par programme que les curseurs explicites. De plus, les curseurs implicites sont considérés comme moins efficaces que les curseurs explicites.