In Oracle ist ein Cursor ein Speicherarbeitsbereich von SQL, der vom System oder Benutzer in Form einer Variablen definiert wird und zum vorübergehenden Speichern von aus der Datenbank extrahierten Datenblöcken verwendet wird, nachdem die Daten von der Datenbank an die Cursorvariable übertragen wurden Dann zerlegt die Anwendung die erforderlichen Daten aus der Cursorvariablen und verarbeitet sie.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.
1. Ich habe einen Absatz gesehen, der das Konzept sehr gut erklärt:
Ein Cursor ist ein Speicherarbeitsbereich von SQL, der vom System oder Benutzer in Form einer Variablen definiert wird. Der Zweck eines Cursors besteht darin, aus der Datenbank extrahierte Datenblöcke vorübergehend zu speichern. In einigen Fällen ist es erforderlich, Daten aus auf der Festplatte gespeicherten Tabellen zur Verarbeitung in den Computerspeicher zu übertragen und schließlich die Verarbeitungsergebnisse anzuzeigen oder in die Datenbank zurückzuschreiben. Auf diese Weise wird die Geschwindigkeit der Datenverarbeitung verbessert, andernfalls verringert ein häufiger Datenaustausch auf der Festplatte die Effizienz.
Es gibt zwei Arten von Cursorn: explizite Cursor und implizite Cursor. Die im oben genannten Programm verwendete Abfrageanweisung SELECT...INTO... kann jeweils nur eine Datenzeile aus der Datenbank extrahieren. Für diese Form der Abfrage und DML-Operation verwendet das System einen impliziten Cursor. Wenn Sie jedoch mehrere Datenzeilen extrahieren möchten, muss der Programmierer einen expliziten Cursor definieren und ihn über Cursor-bezogene Anweisungen verarbeiten. Ein expliziter Cursor entspricht einer SELECT-Anweisung, die mehrere Zeilen und Spalten zurückgibt.
Sobald der Cursor geöffnet ist, werden die Daten von der Datenbank an die Cursorvariable übertragen, und dann zerlegt die Anwendung die erforderlichen Daten aus der Cursorvariablen und verarbeitet sie. Bei unseren Operationen zum Einfügen, Aktualisieren, Löschen und Auswählen von Werten in Variablen verwenden wir implizite Cursor.
Implizite Cursoreigenschaften Bedeutung des Rückgabewerttyps:
SQL%ROWCOUNT Ganzzahliger Typ Stellt die Anzahl der Datenzeilen dar, die von der DML-Anweisung erfolgreich ausgeführt wurden.
SQL%FOUND Der boolesche Wert TRUE steht für Einfügen, Löschen, Aktualisieren oder einzelne Zeile Der Abfragevorgang ist erfolgreich
Der boolesche Typ SQL%NOTFOUND ist das Gegenteil des Rückgabewerts des SQL%FOUND-Attributs
Boolescher Typ SQL%ISOPEN Wahr während der DML-Ausführung, falsch nach dem Ende
2. Impliziter Cursor:
create or replace procedure prc_example (epo in number) as BEGIN UPDATE emp SET sal=sal+100 WHERE empno=epo; IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE('成功修改雇员工资!'); COMMIT; ELSE DBMS_OUTPUT.PUT_LINE('修改雇员工资失败!'); END IF; END; declare e_number number; begin e_number:=7788; prc_example(e_number); end;
3. Zeigen Sie den Cursor an:
Verwenden Sie den Cursor, um alle Mitarbeiternamen mit der Nummer 10 abzufragen
create or replace procedure prc_example is begin declare cursor emp_sor is select ename,sal from emp where deptno=10; cname emp.ename%type; csal emp.sal%type; begin open emp_sor; loop fetch emp_sor into cname,csal; --取游标的值给变量。 dbms_output.put_line('ename:'||cname); exit when emp_sor%notfound; end loop; close emp_sor; end; end;
Empfohlenes Tutorial: „Oracle Video Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der Cursor der gespeicherten Oracle-Prozedur?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!