Différence Entre Le Curseur Explicite Et Le Curseur Implicite

Différence Entre Le Curseur Explicite Et Le Curseur Implicite
Différence Entre Le Curseur Explicite Et Le Curseur Implicite

Vidéo: Différence Entre Le Curseur Explicite Et Le Curseur Implicite

Vidéo: Différence Entre Le Curseur Explicite Et Le Curseur Implicite
Vidéo: LIF10 - CMO2 : Programmation en PL/SQL : les curseurs 2024, Novembre
Anonim

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, puis il peut ê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 que le curseur implicite?

Des 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, de récupération 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 plus d'une ligne, 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. En outre, un curseur implicite est utilisé pour traiter les instructions SELECT INTO. Lors de la récupération 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. En outre,les curseurs implicites peuvent déclencher des exceptions TOO_MANY_ROWS lorsque l'instruction SQL renvoie plusieurs lignes.

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 déplacé vers l'avant dans l'ensemble d'enregistrements. Les curseurs explicites offrent à l'utilisateur un 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 afin que les variables du curseur puissent être modifiées chaque fois qu'il est exécuté. De plus, les curseurs explicites vous permettent d'extraire une ligne entière dans une variable d'enregistrement PL / SQL. Lors de l'utilisation d'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 la déclaration, le curseur doit d'abord être ouvert. Ensuite, la récupération peut être lancée. Si plusieurs lignes doivent être récupérées, l'opération de récupération doit être effectuée dans 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 émettez une instruction select. De plus, plusieurs lignes peuvent être récupérées à 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, par opposition aux curseurs implicites. En substance, 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.

Recommandé: