Was ist ein Oracle-Cursor?
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.
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;
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 语句;
Ö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 游标名( 参数 列表);
Datensatz abrufen: Bewegen Sie den Cursor, um einen Datensatz zu erhalten.
Fetch 游标名InTo 临时记录或属性类型变量;
Cursor schließen: Setzen Sie den Cursor in den Pufferpool, ohne die Ressourcen vollständig freizugeben. Kann wieder geöffnet werden.
Close 游标名;
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;
Loop-Loop-Cursor
。。。 Loop Fatch 游标名InTo 临时记录或属性类型变量; Exit When 游标名%NotFound; End Loop; 。。。
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; /
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; /
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; /
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 更新列列名];
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语句;
参数形式:
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;/
推荐教程:《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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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 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.

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.

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: 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.

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

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).

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.
