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

Detaillierte Erklärung zweier zu beachtender Punkte bei vue3: Setup

Inhaltsverzeichnis In vue2 In vue3 Hinweise zur E...

Führen Sie die folgenden Schritte aus, damit Docker Images abrufen kann

1. Docker Pull zieht das Image Wenn Sie zum Abruf...

Detaillierte Erklärung zur Verwendung der Vue.js-Renderfunktion

Vue empfiehlt in den meisten Fällen die Verwendun...

Ein kurzer Vortrag über das Klonen von JavaScript

Inhaltsverzeichnis 1. Oberflächliches Klonen 2. T...

Anwendungsbeispiel-Tutorial zum Schlüssel-Rendering in Vue

Einführung Während des Front-End-Projektentwicklu...

HTML-Code Textfeld Eingabe begrenzen Textfeld wird grau Textfeldeingabe begrenzen

Methode 1: Setzen Sie das schreibgeschützte Attrib...

Entwicklungshandbuch für Chrome-Plugins (Erweiterungen) (vollständige Demo)

Inhaltsverzeichnis Vorne geschrieben Vorwort Was ...

So löschen Sie ein Image in Docker

Der Befehl zum Löschen von Bildern im Docker laut...

Erläuterung der Faktoren, die die Datenbankleistung in MySQL beeinflussen

Eine Geschichte über die Datenbankleistung Währen...

Muss MySql ein Commit durchführen?

Ob MySQL bei der Ausführung von Vorgängen wie Ein...

Implementierung des WeChat-Applet-Nachrichten-Pushs in Nodejs

Auswählen oder Erstellen einer Abonnementnachrich...