Dans Oracle, le curseur est un mécanisme qui utilise le mot-clé CURSOR pour définir un ensemble de données interrogées par Oracle. L'ensemble de données interrogé peut être stocké dans la mémoire, puis le curseur pointe vers l'un des enregistrements via une boucle. Les curseurs atteignent l’objectif de parcourir des ensembles de données.
L'environnement d'exploitation de ce tutoriel : système Windows 7, version Oracle 11g, ordinateur Dell G3.
Dans Oracle, les curseurs sont un mécanisme par lequel un nom peut être attribué à une instruction SELECT et les informations contenues dans cette instruction SQL peuvent être traitées.
Le curseur Oracle définit un ensemble d'ensembles de données interrogés par Oracle via le mot-clé CURSOR. Semblable à un tableau, l'ensemble de données interrogé est stocké dans la mémoire, puis le curseur pointe vers l'un des enregistrements et l'ensemble de données circulaire est. atteint via le but du curseur de boucle.
Que fait le curseur ?
①Spécifiez la position d'une ligne spécifique dans l'ensemble de résultats.
②Récupérez une ou plusieurs lignes consécutives en fonction de la position actuelle de l'ensemble de résultats.
③ Modifiez les données de la ligne à la position actuelle de l'ensemble de résultats.
④ Définissez différents niveaux de sensibilité aux modifications de données apportées par d'autres utilisateurs.
⑤La base de données est accessible par programme.
Type de curseur Oracle ?
1. Curseur statique : Un curseur dont l'ensemble de résultats a été confirmé (défini statiquement). Divisé en curseurs implicites et explicites
Curseur implicite : toutes les instructions DML sont des curseurs implicites et les informations sur les instructions SQL peuvent être obtenues via l'attribut de curseur implicite.
Afficher le curseur : L'utilisateur affiche le curseur déclaré, c'est-à-dire l'ensemble de résultats spécifié. Lorsqu'une requête renvoie plusieurs lignes de résultats, un curseur explicite est requis.
2. Curseur REF : un objet temporaire qui associe dynamiquement l'ensemble de résultats.
Quels sont les statuts des curseurs Oracle et comment utiliser les attributs du curseur ?
①L'état du curseur est représenté par des attributs.
%Found : L'état d'exécution de l'instruction Fetch (obtention des enregistrements) est True ou False.
%NotFound : Indique si le dernier enregistrement est extrait comme True ou False.
%ISOOpen : Indique si le curseur est ouvert True ou False.
%RowCount : Le nombre de lignes actuellement extraites par le curseur.
②Utilisez les propriétés du curseur.
Exemple :
1 2 3 4 5 6 7 8 9 |
|
Comment utiliser le curseur d'affichage ? Comment parcourir un curseur de boucle ?
1. Utilisez le curseur d'affichage
pour déclarer le curseur : divisez la zone de stockage. Notez que l'instruction Select n'est pas exécutée pour le moment.
1 |
|
Ouvrez le curseur : exécutez l'instruction Select, obtenez l'ensemble de résultats et stockez-le dans le curseur. À ce moment, le curseur pointe vers la tête de l'ensemble de résultats, pas vers le premier enregistrement.
1 |
|
Obtenir un enregistrement : déplacez le curseur pour obtenir un enregistrement
1 |
|
Fermer le curseur : placez le curseur dans le pool de mémoire tampon sans libérer complètement les ressources. Peut être rouvert.
1 |
|
2. Curseur de boucle traversante
Curseur de boucle For
Le curseur de boucle ouvre implicitement le curseur, défile automatiquement pour obtenir un enregistrement et crée automatiquement une variable de type d'enregistrement temporaire pour stocker l'enregistrement. Le curseur se ferme automatiquement après le traitement.
1 2 3 4 |
|
Curseur de boucle de boucle
1 2 3 4 5 6 |
|
Exemple 1 :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Exemple 2 : Utilisez une boucle pour parcourir le curseur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Exemple 3 : Utiliser une boucle For pour parcourir le curseur,
1 2 3 4 5 6 7 8 9 10 |
|
Comment mettre à jour et supprimer des enregistrements dans le curseur affiché ?
①La sous-chaîne WHERE CURRENT OF dans l'instruction UPDATE ou DELETE gère spécifiquement les données les plus récentes extraites de la table où l'opération UPDATE ou DELETE doit être effectuée.
Pour utiliser cette méthode, vous devez utiliser la sous-chaîne FOR UPDATE lors de la déclaration du curseur. Lorsque la boîte de dialogue utilise la sous-chaîne FOR UPDATE pour ouvrir un curseur,
Toutes les lignes de données de l'ensemble de retour seront au niveau de la ligne (ROW-). LEVEL) mode exclusif Verrouillé, les autres objets ne peuvent interroger que ces lignes de données,
ne peuvent pas effectuer d'opérations UPDATE, DELETE ou SELECT...FOR UPDATE.
Dans les requêtes multi-tables, utilisez la clause OF pour verrouiller une table spécifique. Si la clause OF est ignorée, les lignes de données sélectionnées dans toutes les tables seront verrouillées.
Si ces lignes de données ont été verrouillées par d'autres sessions, alors dans des circonstances normales, ORACLE attendra que les lignes de données soient déverrouillées.
② Utiliser la mise à jour ou la suppression :
⑴ Déclarer la mise à jour ou la suppression du curseur d'affichage :
1 2 |
|
⑵ Utiliser l'enregistrement actuel du curseur d'affichage pour mettre à jour ou supprimer :
1 2 |
|
Exemple 1 : Mettre à jour l'enregistrement du curseur d'affichage
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Exemple 2 : Supprimer l'affichage Enregistrement du curseur
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Qu'est-ce qu'un curseur d'affichage avec des paramètres ?
1. Semblables aux procédures et aux fonctions, les paramètres peuvent être transmis au curseur et utilisés dans les requêtes.
Le paramètre définit uniquement le type de données, pas la taille (tous les paramètres formels dans Oracle définissent uniquement le type de données, pas la taille).
与过程不同的是,游标只能接受传递的值,而不能返回值。
可以给参数设定一个缺省值,当没有参数值传递给游标时,就使用缺省值。
游标中定义的参数只是一个占位符,在别处引用该参数不一定可靠。
2、使用带参数的显示游标
声明带参数的显示游标:
1 |
|
参数形式:
1,参数名 数据类型
2,参数名 数据类型 DEFAULT 默认值
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
推荐教程:《Oracle教程》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!