recherche
Maisonbase de donnéesOraclequ'est-ce que le curseur Oracle

qu'est-ce que le curseur Oracle

Feb 23, 2022 am 11:35 AM
oracle游标

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.

qu'est-ce que le curseur Oracle

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 :

/* conn scott/tiger */
  Begin
   Update emp Set  SAL = SAL + 0.1  Where JOB = 'CLERK';
   If  SQL%Found  Then
    DBMS_OUTPUT.PUT_LINE('已经更新!');
   Else
    DBMS_OUTPUT.PUT_LINE('更新失败!');
   End  If;
  End;

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.

CURSOR 游标名( 参数 列表)   [返回值类型]   IS   Select 语句;
  • 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.

 Open 游标名( 参数 列表);
  • Obtenir un enregistrement : déplacez le curseur pour obtenir un enregistrement

Fetch  游标名InTo  临时记录或属性类型变量;
  • Fermer le curseur : placez le curseur dans le pool de mémoire tampon sans libérer complètement les ressources. Peut être rouvert.

Close  游标名;

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.

     For  变量名  In  游标名 
     Loop
      数据处理语句;
     End Loop;
  • Curseur de boucle de boucle

     。。。
    Loop
     Fatch  游标名InTo  临时记录或属性类型变量;
     Exit  When   游标名%NotFound;
    End   Loop;
     。。。

Exemple 1 :

/* conn scott/tiger */
   Declare
     Cursor myCur is select empno,ename,sal from emp;
     vna varchar2(10);
     vno number(4);
     vsal number(7,2);
  Begin
     open myCur;
     fetch myCur into vno,vna,vsal;
     dbms_output.put_line(vno||'    '||vna||'    '||vsal);
     close myCur;
  End;
  /

Exemple 2 : Utilisez une boucle pour parcourir le curseur.

 /* conn scott/tiger */
  Declare
     Cursor myCur is select ename,job,sal,empno from emp;
     varE myCur%rowType;
  Begin
     if myCur%isopen = false then
        open myCur;
       dbms_output.put_line('Opening...');
     end if;
     loop
        fetch myCur into varE;
        exit when myCur%notfound;
        dbms_output.put_line(myCur%rowCount||'    '||vare.empno||'    '||vare.ename||'    '||vare.sal);
     end loop;
     if myCur%isopen then
        Close myCur;
        dbms_output.put_line('Closing...');
     end if;
  End;
  /

Exemple 3 : Utiliser une boucle For pour parcourir le curseur,

  /* conn scott/tiger */
  Declare
     Cursor myCur is select * from emp;
  Begin
     for varA in myCur
      loop
         dbms_output.put_line(myCur%rowCount||'    '||varA.empno||'    '||varA.ename||'  '||varA.sal);
      end loop;
  End;
  /

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 :

   Cursor 游标名IS  SELECT 语句   For Update [ Of  更新列列名];
   Cursor 游标名IS  SELECT 语句   For Delete [ Of  更新列列名];

⑵ Utiliser l'enregistrement actuel du curseur d'affichage pour mettre à jour ou supprimer :

   Update  表名   SET   更新语句  Where   Current  Of   游标名;
   Delete  From  表名   Where   Current  Of   游标名;

Exemple 1 : Mettre à jour l'enregistrement du curseur d'affichage

   /*conn scott/tiger*/
   Declare
     Cursor myCur is select job from emp for update;
       vjob empa.job%type;
       rsal empa.sal%type;
    Begin
       open myCur;
       loop
          fetch myCur into vjob;
          exit when myCur%notFound;
          case  (vjob)
             when 'ANALYST' then  rsal := 0.1;
            when  'CLERK' then  rsal := 0.2;
             when  'MANAGER' then  rsal := 0.3;
             else
               rsal := 0.5;
          end case;
        update emp set sal = sal + rsal where current of myCur;
       end loop;
    End;
    /

Exemple 2 : Supprimer l'affichage Enregistrement du curseur

    /*conn scott/tiger
    Crate table  empa  Select * from scott.emp;
    */
    Declare
      Cursor MyCursor  Select   JOB  From  empa  For  Update;
      vSal   emp.Sal%TYPE;
    Begin
      Loop
       Fetch  MyCursor  InTo  vSal;
       Exit  When  MyCursor%NotFound;
       If   vSal < 800 Then
        Delete  From empa  Where  Cursor  Of   MyCursor;
       End  If;  
      End    Loop;
    End;/

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、使用带参数的显示游标

  • 声明带参数的显示游标:

   CURSOR 游标名  [(parameter[,parameter],...)]    IS   Select语句;

参数形式:

1,参数名   数据类型  

2,参数名   数据类型  DEFAULT  默认值

   例子:

    /*conn scott/tiger
    Crate table  empa  Select * from scott.emp;
    */
    Declare
      Cursor MyCursor(pSal  Number  Default   800)  Select   JOB  From  empa Where  SAL >  pSal ;
      varA  MyCursor%ROWTYPE;
    Begin
      Loop
       Fetch  MyCursor  InTo  varA;
       Exit  When  MyCursor%NotFound;
       DBMS_OUTPUT.PUT_LINE(MyCursor%RowCount||&#39;    &#39;||varA.empno||&#39;    &#39;||varA.ename||&#39;  &#39;||varA.sal); 
      End    Loop;
    End;/

推荐教程:《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!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
MySQL vs Oracle: les avantages et les inconvénientsMySQL vs Oracle: les avantages et les inconvénientsApr 14, 2025 am 12:01 AM

La sélection MySQL et Oracle doit être basée sur le coût, les performances, la complexité et les exigences fonctionnelles: 1. MySQL convient aux projets avec des budgets limités, est simple à installer et convient aux applications de petite à moyenne taille. 2. Oracle convient aux grandes entreprises et fonctionne parfaitement dans la gestion des données à grande échelle et des demandes simultanées élevées, mais est coûteuse et complexe en configuration.

Objectif d'Oracle: Solutions commerciales et gestion des donnéesObjectif d'Oracle: Solutions commerciales et gestion des donnéesApr 13, 2025 am 12:02 AM

Oracle aide les entreprises à réaliser la transformation numérique et la gestion des données grâce à ses produits et services. 1) Oracle fournit un portefeuille complet de produits, y compris les systèmes de gestion de base de données, les systèmes ERP et CRM, aidant les entreprises à automatiser et à optimiser les processus métier. 2) Les systèmes ERP d'Oracle tels que E-BusinessSuite et FusionApplications réalisent l'automatisation des processus métier de bout en bout, améliorent l'efficacité et réduisent les coûts, mais ont des coûts de mise en œuvre et de maintenance élevés. 3) Oracedatabase offre un traitement élevé de données de concurrence et de haute disponibilité, mais a des coûts de licence élevés. 4) L'optimisation des performances et les meilleures pratiques incluent l'utilisation rationnelle de la technologie d'indexation et de partitionnement, la maintenance régulière de la base de données et la conformité aux spécifications de codage.

Comment supprimer l'échec de la bibliothèque OracleComment supprimer l'échec de la bibliothèque OracleApr 12, 2025 am 06:21 AM

Étapes pour supprimer la base de données ratée après que Oracle a échoué à créer une bibliothèque: utilisez le nom d'utilisateur SYS pour se connecter à l'instance cible. Utilisez la base de données Drop pour supprimer la base de données. Base de données de requête V $ pour confirmer que la base de données a été supprimée.

Comment créer des curseurs dans Oracle LoopComment créer des curseurs dans Oracle LoopApr 12, 2025 am 06:18 AM

Dans Oracle, la boucle pour la boucle pour créer des curseurs dynamiquement. Les étapes sont: 1. Définissez le type de curseur; 2. Créez la boucle; 3. Créez le curseur dynamiquement; 4. Exécuter le curseur; 5. Fermez le curseur. Exemple: un curseur peut être créé de cycle par circuit pour afficher les noms et salaires des 10 meilleurs employés.

Comment exporter la vue OracleComment exporter la vue OracleApr 12, 2025 am 06:15 AM

Oracle Views peut être exporté via l'utilitaire EXP: Connectez-vous à la base de données Oracle. Démarrez l'utilitaire EXP, spécifiant le nom de vue et le répertoire d'exportation. Entrez les paramètres d'exportation, y compris le mode cible, le format de fichier et l'espace de table. Commencez à exporter. Vérifiez l'exportation à l'aide de l'utilitaire IMPDP.

Comment arrêter Oracle DatabaseComment arrêter Oracle DatabaseApr 12, 2025 am 06:12 AM

Pour arrêter une base de données Oracle, effectuez les étapes suivantes: 1. Connectez-vous à la base de données; 2. Arrêt immédiatement; 3. Arrêt About complètement.

Que faire si le journal Oracle est pleinQue faire si le journal Oracle est pleinApr 12, 2025 am 06:09 AM

Lorsque les fichiers journaux Oracle sont complets, les solutions suivantes peuvent être adoptées: 1) nettoyer les anciens fichiers journaux; 2) augmenter la taille du fichier journal; 3) augmenter le groupe de fichiers journaux; 4) Configurer la gestion automatique des journaux; 5) Renidialiser la base de données. Avant d'implémenter une solution, il est recommandé de sauvegarder la base de données pour éviter la perte de données.

Comment créer Oracle Dynamic SQLComment créer Oracle Dynamic SQLApr 12, 2025 am 06:06 AM

Les instructions SQL peuvent être créées et exécutées en fonction de l'entrée d'exécution en utilisant Dynamic SQL d'Oracle. Les étapes comprennent: la préparation d'une variable de chaîne vide pour stocker des instructions SQL générées dynamiquement. Utilisez l'instruction EXECUTER IMMÉDIATE OU PRÉPEPART pour compiler et exécuter les instructions SQL dynamiques. Utilisez la variable Bind pour passer l'entrée utilisateur ou d'autres valeurs dynamiques à Dynamic SQL. Utilisez EXECUTER immédiat ou exécuter pour exécuter des instructions SQL dynamiques.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP