MySQL-Cursor-Prinzip und Analyse von Anwendungsbeispielen

MySQL-Cursor-Prinzip und Analyse von Anwendungsbeispielen

Dieser Artikel erläutert anhand von Beispielen die Prinzipien und die Verwendung von MySQL-Cursorn. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

In diesem Artikel:

  • Was ist ein Cursor
  • Erstellen eines Cursors
  • Verwenden von Cursorn

Veröffentlichungsdatum: 18.04.2018


Was ist ein Cursor:

  • Wenn Sie sich bereits mit MySQL-Funktionen befasst haben, werden Sie feststellen, dass es nicht möglich ist, Anweisungen zu verwenden, die mehrere Ergebniszeilen zurückgeben. Wenn Sie es aber wirklich verwenden möchten, müssen Sie einen Cursor verwenden, der Ihnen bei der Auswahl eines Ergebnisses helfen kann (damit ein einzelnes Ergebnis zurückgegeben werden kann).
  • Darüber hinaus können Sie mithilfe eines Cursors problemlos Ergebnisse abrufen, die in den abgerufenen Zeilen eine oder mehrere Zeilen vor- oder zurückgehen.
  • Der Cursor kann über mehrere Zeilen der zurückgegebenen Ergebnisse iterieren.

Auffüllen:

  • In MySQL sind Cursor nur auf gespeicherte Prozeduren und Funktionen anwendbar.


Erstellen Sie einen Cursor:

  • Grammatik:
    • 1. Definieren Sie den Cursor: Deklarieren Sie den Cursornamen Cursor für die Select-Anweisung;
    • 2. Öffnen Sie den Cursor: Öffnen Sie den Cursornamen.
    • Ergebnisse abrufen: Cursornamen in Variablennamen abrufen [, Variablenname];
    • Cursor schließen: Name des Cursors schließen;
      Prozedur p1() erstellen
      beginnen
        Deklariere ID int;
        Deklarationsname varchar(15);
        --Cursor deklarieren, mc-Cursor deklarieren, um * aus Klasse auszuwählen;
        - Öffnen Sie den Cursor, open mc;
        - Holen Sie sich das Ergebnis, holen Sie mc in ID, Name;
        -- Um die Ergebnisse anzuzeigen, wählen Sie ID, Name;
        -- Schließen Sie den Cursor close mc;
        
      Ende;
      erstelle Prozedur p2()
      beginnen
        Deklariere ID int;
        Deklarationsname varchar(15);
        --Cursor deklarieren, mc-Cursor deklarieren, um * aus Klasse auszuwählen;
        - Öffnen Sie den Cursor, open mc;
        -- Ergebnisschleife abrufen -- Schleife und übertrage den Inhalt der Tabelle an Klasse 2, fetch mc in ID, Name;
        -- Hier wird das Ergebnis angezeigt, indem Sie in class2 values(id,name) einfügen.
        -- Schließen Sie die Cursor-Endschleife.
        MC schließen;
        
      Ende;


Verwenden von Cursorn:

  • Bei jedem Abruf erhält der Cursor eine Ergebniszeile. Sie können Variablen verwenden, um den Wert jeder abgerufenen Spalte abzurufen.
    erstelle Prozedur p2()
    beginnen
      Deklariere ID int;
      Deklarationsname varchar(15);
      --Cursor deklarieren, mc-Cursor deklarieren, um * aus Klasse auszuwählen;
      - Öffnen Sie den Cursor, open mc;
      -- Ergebnisschleife abrufen -- Schleife und übertrage den Inhalt der Tabelle an Klasse 2, fetch mc in ID, Name;
      -- Hier wird das Ergebnis angezeigt, indem Sie in class2 values(id,name) einfügen.
      -- Schließen Sie die Cursor-Endschleife.
      MC schließen;
      
    Ende;

Der obige Code enthält einen Fehler image Wenn Sie die Schleife immer wieder durchlaufen, erreichen Sie immer das Ende der Tabelle. Wenn Sie das Ende erreicht haben, können Sie nicht weiter abrufen. Generell sollten Sie Fehler vermeiden. Bevor Sie das Ende erreichen, wird ein mysql-definiertes

Prozedur p3() erstellen
beginnen
  Deklariere ID int;
  Deklarationsname varchar(15);
  Deklarieren Sie die Flagge als Int-Standard 0.
  --Cursor deklarieren, mc-Cursor deklarieren, um * aus Klasse auszuwählen;
  Deklarieren Sie den Weiter-Handler für „Nicht gefunden“, setzen Sie die Flagge auf 1;
  - Öffnen Sie den Cursor, open mc;
  -- Holen Sie sich das Ergebnis l2:loop 
  
  Hol' mc in ID, Name;
  if flag=1 then -- wenn der Abruf fehlschlägt, fährt der Handler fort
    lasse l2;
  Ende wenn;
  -- Hier wird das Ergebnis angezeigt, indem Sie in class2 values(id,name) einfügen.
  -- Schließen Sie die Cursor-Endschleife.
  MC schließen;
  
Ende;

rufe p3() auf; – kein Fehler, wähle * aus Klasse2;

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“, „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“ und „Zusammenfassung der allgemeinen MySQL-Funktionen“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Definition und Verwendung des MySQL-Cursors
  • Verwenden einer Cursorschleife zum Lesen temporärer Tabellen in gespeicherten MySQL-Prozeduren
  • So deklarieren Sie einen Cursor in MySQL
  • Detaillierte Erklärung der Verwendung und Funktion des MySQL-Cursors
  • Hier erfahren Sie alles über die Funktionsweise der MySQL-Datenbank in Python (Cursor-Erklärung).
  • Detaillierte Erklärung des Prinzips und der Verwendung des Cursors (DECLARE) in der gespeicherten MySQL-Prozedur
  • Detaillierte Erläuterung der MySQL-Cursor-Konzepte und -Verwendung
  • Detaillierte Erläuterung der gespeicherten Prozeduren, Cursor und Transaktionsbeispiele von MySQL
  • Beispiel für die Verwendung des Cursors in einer gespeicherten MySQL-Prozedur
  • Verschachtelte Schleife einer gespeicherten MySQL-Prozedur mit Cursor-Beispielcode
  • Beispiel für das Verlassen und Fortsetzen der Cursorschleife in gespeicherten MySQL-Prozeduren
  • MySQL-Cursorfunktionen und -Verwendung

<<:  JavaScript-Objekte (Details)

>>:  Windows Server 2012 Kein Remotedesktoplizenzserver kann eine Lizenz bereitstellen, und die Remotesitzung wird getrennt

Artikel empfehlen

JavaScript realisiert den Warteschlangenstrukturprozess

Inhaltsverzeichnis 1. Warteschlangen verstehen 2....

Schritte zum Wiederherstellen einer einzelnen MySQL-Tabelle

Während ich eine Pause machte, wurde ich durch ei...

Analyse der Vorteile von path.join() in Node.js

Sie fragen sich möglicherweise, warum Sie die Met...

Reagieren Sie mit Beispielcode zur Implementierung des Anmeldeformulars

Als Vue-Benutzer ist es an der Zeit, React zu erw...

Lösung, wenn Docker plötzlich vom externen Netzwerk nicht mehr erreichbar ist

Nach den Methoden der Meister wurde die Ursache g...

Vue+Websocket implementiert einfach die Chat-Funktion

In diesem Artikel wird der spezifische Code von V...

JavaScript-Timer zum nahtlosen Scrollen von Bildern

In diesem Artikel wird der spezifische JavaScript...

JavaScript CSS3 zur Implementierung einer einfachen Video-Sperrfunktion

In diesem Artikel wird versucht, eine Demo zur Si...

So bereinigen Sie den MySQL-Speicherplatz in der Alibaba Cloud

Heute habe ich von Alibaba Cloud eine Festplatten...

Eine kurze Analyse der Verwendung von watchEffect in Vue3

Vorwort Jeder sollte mit der Watch-API in vue2 ve...

Analyse der Prinzipien von MySQL Dirty Page Flush und Shrinking Table Space

MySQL-Dirty-Pages Aufgrund des WAL-Mechanismus er...

Versionsnummern in CSS- und JS-Links in HTML (Cache aktualisieren)

Hintergrund Suchen Sie in der Suchmaschine nach d...