Heim Datenbank Oracle Was ist ein Oracle-Cursor?

Was ist ein Oracle-Cursor?

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

In Oracle ist der Cursor ein Mechanismus, der das Schlüsselwort CURSOR verwendet, um einen von Oracle abgefragten Datensatz zu definieren. Der abgefragte Datensatz kann im Speicher gespeichert werden, und der Cursor zeigt dann über eine Schleife auf einen der Datensätze. Cursor erfüllen den Zweck, Datensätze zu durchlaufen.

Was ist ein Oracle-Cursor?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Oracle 11g-Version, Dell G3-Computer.

In Oracle sind Cursor ein Mechanismus, mit dem einer SELECT-Anweisung ein Name zugewiesen und die Informationen in dieser SQL-Anweisung verarbeitet werden können.

Oracle-Cursor definiert einen Satz von Datensätzen, die von Oracle über das Schlüsselwort CURSOR abgefragt werden. Ähnlich wie bei einem Array wird der abgefragte Datensatz im Speicher gespeichert, und dann wird der Cursor verwendet, um auf einen der Datensätze und das Rundschreiben zu zeigen Der Datensatz wird über den Schleifencursor erreicht.

Was macht der Cursor?

①Geben Sie die Position einer bestimmten Zeile im Ergebnissatz an.

②Rufen Sie eine Zeile oder mehrere aufeinanderfolgende Zeilen basierend auf der aktuellen Position der Ergebnismenge ab.

③ Ändern Sie die Daten in der Zeile an der aktuellen Position des Ergebnissatzes.

④ Definieren Sie unterschiedliche Empfindlichkeitsstufen für Datenänderungen anderer Benutzer.

⑤Auf die Datenbank kann programmgesteuert zugegriffen werden.

Typ des Oracle-Cursors?

1. Statischer Cursor: Ein Cursor, dessen Ergebnismenge bestätigt wurde (statisch definiert). Unterteilt in implizite und explizite Cursor

  • Impliziter Cursor: Alle DML-Anweisungen sind implizite Cursor, und SQL-Anweisungsinformationen können über das implizite Cursorattribut abgerufen werden.

  • Cursor anzeigen: Der Benutzer zeigt den deklarierten Cursor an, dh die angegebene Ergebnismenge. Wenn eine Abfrage mehr als eine Ergebniszeile zurückgibt, ist ein expliziter Cursor erforderlich.

2. REF-Cursor: ein temporäres Objekt, das die Ergebnismenge dynamisch zuordnet.

Welche Status haben Oracle-Cursor und wie werden Cursorattribute verwendet?

①Der Status des Cursors wird durch Attribute dargestellt.

  • %Gefunden: Der Ausführungsstatus der Fetch-Anweisung (Datensätze abrufen) ist „True“ oder „False“.

  • %NotFound: Ob der letzte Datensatz als „True“ oder „False“ extrahiert wird.

  • %ISOpen: Ob der Cursor geöffnet ist, wahr oder falsch.

  • %RowCount: Die Anzahl der Zeilen, die derzeit vom Cursor extrahiert werden.

②Verwenden Sie die Eigenschaften des Cursors.

Beispiel:

/* 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;
Nach dem Login kopieren

Wie verwende ich den Anzeigecursor? Wie iteriere ich über einen Schleifencursor?

1. Verwenden Sie den Anzeigecursor

  • , um den Cursor zu deklarieren: Teilen Sie den Speicherbereich. Beachten Sie, dass die Select-Anweisung zu diesem Zeitpunkt nicht ausgeführt wird.

CURSOR 游标名( 参数 列表)   [返回值类型]   IS   Select 语句;
Nach dem Login kopieren
  • Öffnen Sie den Cursor: Führen Sie die Select-Anweisung aus, rufen Sie die Ergebnismenge ab und speichern Sie sie im Cursor. Zu diesem Zeitpunkt zeigt der Cursor auf den Kopf der Ergebnismenge, nicht auf den ersten Datensatz.

 Open 游标名( 参数 列表);
Nach dem Login kopieren
  • Datensatz abrufen: Bewegen Sie den Cursor, um einen Datensatz zu erhalten.

Fetch  游标名InTo  临时记录或属性类型变量;
Nach dem Login kopieren
  • Cursor schließen: Setzen Sie den Cursor in den Pufferpool, ohne die Ressourcen vollständig freizugeben. Kann wieder geöffnet werden.

Close  游标名;
Nach dem Login kopieren

2. Schleifencursor durchlaufen

  • Für Schleifencursor

Der Schleifencursor öffnet implizit den Cursor, scrollt automatisch, um einen Datensatz zu erhalten, und erstellt automatisch eine temporäre Datensatztypvariable zum Speichern des Datensatzes. Der Cursor wird nach der Bearbeitung automatisch geschlossen.

     For  变量名  In  游标名 
     Loop
      数据处理语句;
     End Loop;
Nach dem Login kopieren
  • Loop-Loop-Cursor

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

Beispiel 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;
  /
Nach dem Login kopieren

Beispiel 2: Verwenden Sie eine Schleife, um den Cursor zu durchlaufen.

 /* 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;
  /
Nach dem Login kopieren

Beispiel 3: Verwenden einer For-Schleife zum Durchqueren des Cursors,

  /* 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;
  /
Nach dem Login kopieren

Wie aktualisiere und lösche ich Datensätze im angezeigten Cursor?

①Der WHERE CURRENT OF-Teilstring in der UPDATE- oder DELETE-Anweisung behandelt speziell die aktuellsten Daten, die aus der Tabelle abgerufen wurden, um UPDATE- oder DELETE-Vorgänge auszuführen.

Um diese Methode zu verwenden, müssen Sie beim Deklarieren des Cursors den FOR UPDATE-Teilstring verwenden. Wenn der Dialog den FOR UPDATE-Teilstring zum Öffnen eines Cursors verwendet,

Alle Datenzeilen im Rückgabesatz befinden sich auf Zeilenebene (ROW-). LEVEL) Exklusivmodus Gesperrt, andere Objekte können nur diese Datenzeilen abfragen,

kann keine UPDATE-, DELETE- oder SELECT...FOR UPDATE-Operationen ausführen.

Verwenden Sie bei Abfragen mit mehreren Tabellen die OF-Klausel, um eine bestimmte Tabelle zu sperren. Wenn die OF-Klausel ignoriert wird, werden die ausgewählten Datenzeilen in allen Tabellen gesperrt.

Wenn diese Datenzeilen durch andere Sitzungen gesperrt wurden, wartet ORACLE unter normalen Umständen, bis die Datenzeilen entsperrt werden. 🔜 Cursoraufzeichnung

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

Was ist ein Anzeigecursor mit Parametern?

1. Ähnlich wie bei Prozeduren und Funktionen können Parameter an den Cursor übergeben und in Abfragen verwendet werden.

Der Parameter definiert nur den Datentyp, keine Größe (alle formalen Parameter in Oracle definieren nur den Datentyp, es wird keine Größe angegeben).

与过程不同的是,游标只能接受传递的值,而不能返回值。

  可以给参数设定一个缺省值,当没有参数值传递给游标时,就使用缺省值。

游标中定义的参数只是一个占位符,在别处引用该参数不一定可靠。

2、使用带参数的显示游标

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

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

参数形式:

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||'    '||varA.empno||'    '||varA.ename||'  '||varA.sal); 
      End    Loop;
    End;/
Nach dem Login kopieren

推荐教程:《Oracle教程

Das obige ist der detaillierte Inhalt vonWas ist ein Oracle-Cursor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie lange werden Oracle-Datenbankprotokolle aufbewahrt? Wie lange werden Oracle-Datenbankprotokolle aufbewahrt? May 10, 2024 am 03:27 AM

Der Aufbewahrungszeitraum von Oracle-Datenbankprotokollen hängt vom Protokolltyp und der Konfiguration ab, einschließlich: Redo-Protokolle: Wird durch die maximale Größe bestimmt, die mit dem Parameter „LOG_ARCHIVE_DEST“ konfiguriert wird. Archivierte Redo-Protokolle: Bestimmt durch die maximale Größe, die durch den Parameter „DB_RECOVERY_FILE_DEST_SIZE“ konfiguriert wird. Online-Redo-Logs: nicht archiviert, gehen beim Neustart der Datenbank verloren und der Aufbewahrungszeitraum stimmt mit der Instanzlaufzeit überein. Audit-Protokoll: Wird durch den Parameter „AUDIT_TRAIL“ konfiguriert und standardmäßig 30 Tage lang aufbewahrt.

Die Reihenfolge der Schritte zum Starten der Oracle-Datenbank ist Die Reihenfolge der Schritte zum Starten der Oracle-Datenbank ist May 10, 2024 am 01:48 AM

Die Startsequenz der Oracle-Datenbank ist: 1. Überprüfen Sie die Voraussetzungen. 3. Starten Sie die Datenbankinstanz. 6. Überprüfen Sie den Datenbankstatus . Aktivieren Sie den Dienst (falls erforderlich). 8. Testen Sie die Verbindung.

Wie viel Speicher benötigt Oracle? Wie viel Speicher benötigt Oracle? May 10, 2024 am 04:12 AM

Die von Oracle benötigte Speichermenge hängt von der Datenbankgröße, dem Aktivitätsniveau und dem erforderlichen Leistungsniveau ab: zum Speichern von Datenpuffern, Indexpuffern, zum Ausführen von SQL-Anweisungen und zum Verwalten des Datenwörterbuch-Cache. Die genaue Menge hängt von der Datenbankgröße, dem Aktivitätsgrad und dem erforderlichen Leistungsniveau ab. Zu den Best Practices gehören das Festlegen der geeigneten SGA-Größe, die Dimensionierung von SGA-Komponenten, die Verwendung von AMM und die Überwachung der Speichernutzung.

So sehen Sie die Häufigkeit des Vorkommens eines bestimmten Zeichens in Oracle So sehen Sie die Häufigkeit des Vorkommens eines bestimmten Zeichens in Oracle May 09, 2024 pm 09:33 PM

Um die Anzahl der Vorkommen eines Zeichens in Oracle zu ermitteln, führen Sie die folgenden Schritte aus: Ermitteln Sie die Gesamtlänge einer Zeichenfolge. Ermitteln Sie die Länge der Teilzeichenfolge, in der ein Zeichen vorkommt. Zählen Sie die Anzahl der Vorkommen eines Zeichens, indem Sie die Länge der Teilzeichenfolge subtrahieren von der Gesamtlänge.

Anforderungen an die Hardwarekonfiguration des Oracle-Datenbankservers Anforderungen an die Hardwarekonfiguration des Oracle-Datenbankservers May 10, 2024 am 04:00 AM

Anforderungen an die Hardwarekonfiguration des Oracle-Datenbankservers: Prozessor: Multi-Core, mit einer Hauptfrequenz von mindestens 2,5 GHz. Für große Datenbanken werden 32 Kerne oder mehr empfohlen. Speicher: Mindestens 8 GB für kleine Datenbanken, 16–64 GB für mittelgroße Datenbanken, bis zu 512 GB oder mehr für große Datenbanken oder hohe Arbeitslasten. Speicher: SSD- oder NVMe-Festplatten, RAID-Arrays für Redundanz und Leistung. Netzwerk: Hochgeschwindigkeitsnetzwerk (10 GbE oder höher), dedizierte Netzwerkkarte, Netzwerk mit geringer Latenz. Sonstiges: Stabile Stromversorgung, redundante Komponenten, kompatibles Betriebssystem und Software, Wärmeableitung und Kühlsystem.

So lesen Sie eine DBF-Datei in Oracle So lesen Sie eine DBF-Datei in Oracle May 10, 2024 am 01:27 AM

Oracle kann DBF-Dateien durch die folgenden Schritte lesen: Erstellen Sie eine externe Tabelle und verweisen Sie auf die DBF-Datei.

Wie viel Speicher wird für die Verwendung der Oracle-Datenbank benötigt? Wie viel Speicher wird für die Verwendung der Oracle-Datenbank benötigt? May 10, 2024 am 03:42 AM

Die für eine Oracle-Datenbank erforderliche Speichermenge hängt von der Datenbankgröße, dem Workload-Typ und der Anzahl gleichzeitiger Benutzer ab. Allgemeine Empfehlungen: Kleine Datenbanken: 16–32 GB, mittlere Datenbanken: 32–64 GB, große Datenbanken: 64 GB oder mehr. Weitere zu berücksichtigende Faktoren sind die Datenbankversion, Speicheroptimierungsoptionen, Virtualisierung und Best Practices (Speichernutzung überwachen, Zuweisungen anpassen).

Von Oracle geplante Aufgaben führen den Erstellungsschritt einmal täglich aus Von Oracle geplante Aufgaben führen den Erstellungsschritt einmal täglich aus May 10, 2024 am 03:03 AM

Um in Oracle eine geplante Aufgabe zu erstellen, die einmal täglich ausgeführt wird, müssen Sie die folgenden drei Schritte ausführen: Erstellen Sie einen Job. Fügen Sie dem Job einen Unterjob hinzu und legen Sie seinen Zeitplanausdruck auf „INTERVALL 1 TAG“ fest. Aktivieren Sie den Job.

See all articles