Die gespeicherte Prozedur von Oracle ist ein vorkompilierter PL/SQL-Code, der bei Bedarf aufgerufen und ausgeführt werden kann. Gespeicherte Prozeduren können einen Teil der Geschäftslogik kapseln, die Effizienz der SQL-Ausführung verbessern und komplexe Vorgänge durch Aufrufen der Schnittstelle in einen einfachen Vorgang kapseln, wodurch die Wartbarkeit und Zuverlässigkeit von Datenbankanwendungen verbessert wird. In diesem Artikel wird die Syntax gespeicherter Oracle-Prozeduren ausführlich vorgestellt.
Gespeicherte Oracle-Prozeduren erstellen
In Oracle gibt es zwei Hauptmethoden zum Erstellen gespeicherter Prozeduren. Eine besteht darin, die CREATE PROCEDURE-Anweisung zum Erstellen einer gespeicherten Prozedur zu verwenden, und die andere darin, PL/SQL-Tools zum Erstellen einer gespeicherten Prozedur zu verwenden .
Die Syntax für die Verwendung der CREATE PROCEDURE-Anweisung zum Erstellen einer gespeicherten Prozedur lautet wie folgt:
CREATE [OR REPLACE] PROCEDURE procedure_name
(parameter_name [IN | OUT | IN OUT] data_type, ...)
IS
[DECLARATIONS ]
BEGIN
Anweisungen
[EXCEPTION]
Anweisungen zur Ausnahmebehandlung
END [procedure_name];
Unter diesen ist CREATE PROCEDURE die Anweisung zum Erstellen einer gespeicherten Prozedur, OR REPLACE ist ein optionales Schlüsselwort, das angibt, dass die gespeicherte Prozedur bereits vorhanden ist existiert, ersetzen Sie es; procedure_name ist der Name der gespeicherten Prozedur; data_type ist der Datentyp des Parameters; ; DECLARATIONS ist der optionale Variablen- oder Konstantendeklarationsabschnitt zwischen BEGIN und END. Der Hauptteil ist der Hauptteil, der SQL-Anweisungen und PL/SQL-Code enthält.
Der Prozess zum Erstellen einer gespeicherten Prozedur mit PL/SQL-Tools ist wie folgt:
Parameterübergabe
Gespeicherte Prozeduren von Oracle können Parameter empfangen und zurückgeben, bei denen es sich um Eingabeparameter, Ausgabeparameter oder Eingabe- und Ausgabeparameter handeln kann. Die Eingabeparameter sind die in der gespeicherten Prozedur übergebenen Parameterwerte, die Ausgabeparameter sind die in der gespeicherten Prozedur berechneten Ergebniswerte und die Eingabe- und Ausgabeparameter spielen gleichzeitig die Rolle von Eingabe- und Ausgabeparametern.
Beim Definieren von Parametern einer gespeicherten Prozedur müssen Sie den Parameternamen, den Datentyp und die Parameterrichtung (IN, OUT oder IN OUT) angeben. Zum Beispiel:
VERFAHREN ERSTELLEN ODER ERSETZEN emp_salary_increase
(emp_id IN NUMBER, raise_percent IN NUMBER, new_salary OUT NUMBER)
IS
BEGIN
SELECT Salary + (salary * (increase_percent/100)) INTO new_salary FROM Mitarbeiter WO Mitarbeiter_ id = emp_id;
ENDE;
In diesem Beispiel empfängt die gespeicherte Prozedur emp_salary_increase drei Parameter, emp_id und raise_percent sind Eingabeparameter und new_salary ist ein Ausgabeparameter.
Beim Verweis auf gespeicherte Prozedurparameter muss die Abkürzung des gespeicherten Prozedurnamens vor dem Parameternamen hinzugefügt werden. Zum Beispiel:
emp_salary_increase(100, 10, :new_salary);
Im obigen Code sind 100 und 10 die Parameterwerte von emp_id und raise_percent, und :new_salary ist der von der berechnete Wert des Ausgabeparameters new_salary gespeicherte Prozedur.
Bedingte Verzweigungen und Schleifenstrukturen
Wie andere Programmiersprachen unterstützen auch gespeicherte Oracle-Prozeduren bedingte Verzweigungen und Schleifenstrukturen. Zu den gängigen Verzweigungsanweisungen gehören IF-THEN-, IF-THEN-ELSE- und CASE-Anweisungen. Zu den Schleifenanweisungen gehören WHILE- und FOR-Anweisungen. Die Syntax der
IF-THEN-Anweisung lautet wie folgt:
IF Bedingung THEN
– Anweisungsblock ausführen
END IF;
In diesem Beispiel wird der Anweisungsblock ausgeführt, wenn der Wert der Bedingung TRUE ist. Die Syntax der
IF-THEN-ELSE-Anweisung lautet wie folgt:
IF-Bedingung THEN
-- Anweisungsblock ausführen
ELSE
-- anderen Anweisungsblock ausführen
END IF;
In diesem Beispiel, wenn der Wert von Bedingung ist WAHR. Führen Sie dann den ersten Anweisungsblock aus. Andernfalls führen Sie den zweiten Anweisungsblock aus.
Die Syntax der CASE-Anweisung lautet wie folgt:
CASE case_expression
WHEN when_expression THEN
-- execute statement block
WHEN when_expression THEN
-- execute another statement block
ELSE
-- default block
END CASE;
In diesem Beispiel ist case_expression der Vergleichsausdruck in der FALL Anweisung, when_expression Dies ist der bedingte Ausdruck in der CASE-Anweisung, der mehrere WHEN-Zweige haben kann. Die Syntax der
WHILE-Schleife lautet wie folgt:
WHILE-Bedingungsschleife
– Anweisungsblock ausführen
END LOOP;
In diesem Beispiel führt die while-Schleife den Anweisungsblock zyklisch entsprechend dem Ergebnis des Bedingungsausdrucks aus.
FOR-Schleifensyntax lautet wie folgt:
FOR index IN [REVERSE] untere_Grenze..obere_Grenze LOOP
– Anweisungsblock ausführen
END LOOP;
In diesem Beispiel ist Index eine Ganzzahlvariable, untere_Grenze und obere_Grenze sind jeweils Schleifen Start- und Endwerte. Wenn Sie das Schlüsselwort REVERSE verwenden, iteriert die Schleife von hoch nach niedrig.
Ausnahmebehandlung
Wenn in gespeicherten Oracle-Prozeduren eine Ausnahme auftritt, muss diese so elegant wie möglich behandelt werden. Wenn die Ausnahmebehandlung nicht berücksichtigt wird, kann die Ausführung der gespeicherten Prozedur möglicherweise nicht abgeschlossen werden oder es können verschiedene Probleme auftreten.
Die Ausnahmebehandlung kann mithilfe des Anweisungsblocks EXCEPTION abgeschlossen werden, der einen oder mehrere WHEN-THEN-Blöcke enthält, um unterschiedliche Verarbeitungsvorgänge in unterschiedlichen Ausnahmesituationen durchzuführen. Jeder WHEN-THEN-Block muss den Ausnahmenamen und die entsprechende Ausnahmebehandlungsoperation angeben. Zum Beispiel:
DECLARE
emp_id NUMBER(10);
emp_salary NUMBER(10, 2);
BEGIN
SELECT salary INTO emp_salary FROM employees WHERE employee_id = emp_id;
EXCEPTION
WHEN no_data_found THEN
emp_id := NULL;
WHEN others THEN
RAISE;
END;
在这个例子中,如果SELECT语句找不到数据行,则没有找到数据的异常被捕获。异常处理程序将赋值NULL值到emp_id变量。如果有其他未知异常,则使用RAISE语句继续抛出异常。
结论
本文介绍了Oracle存储过程的语法,包括创建存储过程、参数传递、条件分支、循环结构和异常处理。了解Oracle存储过程的语法和使用方法可以让你更好地利用Oracle数据库的强大功能,提高开发效率和应用程序的可靠性。
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Syntax gespeicherter Oracle-Prozeduren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!