Heim  >  Artikel  >  Datenbank  >  Beispiel einer gespeicherten Oracle-Prozedur

Beispiel einer gespeicherten Oracle-Prozedur

WBOY
WBOYOriginal
2023-05-11 11:13:062234Durchsuche

Eine gespeicherte Prozedur ist ein vorkompiliertes Datenbankprogramm, das eine Reihe von SQL-Anweisungen und Steueranweisungen enthält, die bei Bedarf aufgerufen werden können. In diesem Artikel werden die Grundkenntnisse und Beispiele für gespeicherte Oracle-Datenbankprozeduren vorgestellt.

1. Grundlagen gespeicherter Prozeduren

1.1 Vorteile gespeicherter Prozeduren

Gespeicherte Prozeduren sind eine effektive Methode zur Verbesserung der Datenbankleistung. Sie verbessern die Effizienz der Anwendungsinteraktionen mit der Datenbank, da SQL-Anweisungen auf der Datenbankseite vorkompiliert werden, sodass sie Vorgänge beim Aufruf schneller abschließen können. Es erhöht auch die Datensicherheit, da gespeicherte Prozeduren Berechtigungsprüfungen durchführen können, bevor Daten in der Datenbank erstellt und geändert werden.

1.2 Erstellung gespeicherter Prozeduren

Sie können Oracle SQL-Entwicklungstools verwenden, um gespeicherte Prozeduren zu erstellen. Oracle SQL Developer und SQL Plus sind häufig verwendete Tools.

Das Folgende ist die grundlegende Syntax zum Erstellen einer gespeicherten Prozedur:

CREATE [OR REPLACE] PROCEDURE Prozedurname
([Parametername IN/OUT-Datentyp [, Parametername IN/OUT-Datentyp …]])
IS
BEGIN
Anweisung(en );
EXCEPTION
Exception_handler;
END;

Unter diesen sind die Parameter optional, und der Befehl „[OR REPLACE]“ kann angeben, dass die Anwendung vorhanden sein und den Status der gespeicherten Prozedur beibehalten muss.

1.3 Eingabe- und Ausgabeparameter gespeicherter Prozeduren

Gespeicherte Prozeduren können Eingabeparameter und Ausgabeparameter akzeptieren. Eingabeparameter können verwendet werden, um bedingte Operationen innerhalb einer gespeicherten Prozedur auszuführen oder um Daten an eine gespeicherte Prozedur zu übergeben. Ausgabeparameter werden verwendet, um Informationen wie Werte oder vorgegebene Werte im Ausgabeprozess zurückzugeben.

So interagieren einige Parameter:

IN: Eingabeparameter werden verwendet, um Werte an gespeicherte Prozeduren zu übergeben.

OUT: Ausgabeparameter werden nicht für Eingabedaten verwendet, können aber über gespeicherte Prozeduren Werte zurückgeben.

INOUT: Eingabe-/Ausgabeparameter ermöglichen die Übergabe eines Werts als Parameter und können durch den Ausführungsrückgabewert der gespeicherten Prozedur geändert werden.

1.4 Ausnahmebehandlung gespeicherter Prozeduren

Gespeicherte Prozeduren können Ausnahmen wie Funktionen behandeln. Wenn in der gespeicherten Prozedur ein Fehler auftritt, können Sie eine Ausnahmebehandlung einrichten. Es kann die Verwaltung benutzerdefinierter Fehlermeldungen implementieren und bestimmte Verhaltensweisen verwenden, um diese Fehler zu übermitteln, wenn Fehler auftreten.

Das Folgende ist die grundlegende Syntax zum Erstellen der Ausnahmebehandlung:

DECLARE
Ausnahmename EXCEPTION;
PRAGMA EXCEPTION_INIT (Ausnahmename, Fehlercode);
BEGIN
Anweisung(en);
EXCEPTION

  WHEN exception_name THEN
     statement(s);

END;

2. Gespeicherte Prozedur Instanz

Im Folgenden sind einige häufige Beispiele für gespeicherte Prozeduren aufgeführt:

2.1 Einfache Abfrage einer gespeicherten Prozedur

Das Folgende ist ein einfaches Beispiel für eine gespeicherte Prozedur, das die Daten ausgibt, die die Bedingungen in der Tabelle erfüllen:

VERFAHREN ERSTELLEN ODER ERSETZEN get_emp_data
(
ID IN NUMBER,
NAME OUT VARCHAR2,
SALARY OUT NUMBER
)
IS
BEGIN
SELECT Mitarbeitername,Gehalt INTO NAME,Gehalt von Mitarbeitern WHERE Mitarbeiter_ID = ID;
END;

Die oben gespeicherte Prozedurinstanz benötigt zwei Parameter zu übergeben: ID ist ein erforderlicher Eingabeparameter, der die ID des Mitarbeiters definiert, dessen Informationen abgefragt werden sollen, während Name und Gehalt Ausgabeparameter sind, die jeweils die Werte der entsprechenden Spalten in den Abfrageergebnissen akzeptieren .

Rufen Sie den Wert des Ausgabeparameters der gespeicherten Prozedur ab. Sie können die gespeicherte Prozedur wie eine Funktion aufrufen:

DECLARE
emp_name VARCHAR2(20);
emp_salary NUMBER(10,2);
BEGIN
get_emp_data (100, emp_name,emp_salary);
DBMS_OUTPUT.PUT_LINE('Name: ' || emp_name);
DBMS_OUTPUT.PUT_LINE('Salary: ' || emp_salary);
END;

Im obigen Code wird die Parameter-ID der gespeicherten Prozedur festgelegt auf 100, daher werden der Name und das Gehalt des Mitarbeiters zurückgegeben.

2.2 Einfügevorgang einer gespeicherten Prozedur

Das Folgende ist ein Beispiel einer gespeicherten Prozedur, die die Funktion des Einfügens einer Datenzeile in die angegebene Mitarbeiterliste implementiert:

VERFAHREN ERSTELLEN ODER ERSETZEN add_employee
(
ID IN NUMBER,
NAME IN VARCHAR2,
ALTER IN NUMMER,
GEHALT IN NUMMER
)
IS
BEGIN
INSERT INTO Angestellte VALUES (ID,NAME,ALTER,GEHALT);
COMMIT;
DBMS_OUTPUT.PUT_LINE('Mitarbeiter hinzugefügt.');
EXCEPTION
WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Error adding employee.');

END;

Die obige gespeicherte Prozedurinstanz erfordert 4 Eingabeparameter: Mitarbeiter-ID, Mitarbeitername, Mitarbeiteralter und Mitarbeitergehalt, die dann in die Tabelle „Mitarbeiter“ eingefügt werden. Wenn das Einfügen erfolgreich ist, wird die Meldung „Mitarbeiter hinzugefügt“ angezeigt. Wenn das Einfügen fehlschlägt, wird die Meldung „Fehler beim Hinzufügen des Mitarbeiters“ angezeigt.

2.3 Aktualisierungsvorgang der gespeicherten Prozedur

Das folgende Beispiel stellt die Funktion bereit, das Gehalt eines Mitarbeiters mit einer angegebenen ID in der Mitarbeitertabelle um 10 % zu erhöhen:

PROZEDUR ERSTELLEN ODER ERSETZEN, raise_employee_salary
(
ID IN NUMBER
)
IS
CURSOR c_employee_salary IS

SELECT salary FROM employees WHERE employee_id = ID;

v_employee_salary NUMBER;
BEGIN
OPEN c_employee_salary;
FETCH c_employee_salary INTO v_employee_salary;
v_employe e_salary := v_employee_salary * 1.1;
UPDATE Mitarbeiter SET Gehalt = v_employee _salary WHERE Employee_id = ID;
COMMIT;
DBMS_OUTPUT .PUT_LINE('Gehalt erhöht. ');
EXCEPTION
WENN KEINE_DATEN_GEFUNDEN DANN

DBMS_OUTPUT.PUT_LINE('Employee not found.');

WENN ANDERE DANN

DBMS_OUTPUT.PUT_LINE('Error increasing salary.');

END;

Das obige Beispiel einer gespeicherten Prozedur erfordert 1 Eingabeparameter: Mitarbeiter-ID. Es ermittelt das Gehalt des Mitarbeiters basierend auf der Mitarbeiter-ID, multipliziert es mit 1,1 und aktualisiert es in der Tabelle. Bei korrekter Aktualisierung wird die Meldung „Gehalt erhöht“ angezeigt. Wenn der Mitarbeiter nicht gefunden werden kann, wird die Meldung „Mitarbeiter nicht gefunden“ angezeigt. Wenn andere Fehler auftreten, wird die Meldung „Fehler bei der Gehaltserhöhung“ angezeigt.

Zusammenfassung

In diesem Artikel haben wir die Grundlagen gespeicherter Oracle-Datenbankprozeduren und einige Beispiele vorgestellt. Gespeicherte Prozeduren können die Datenbankleistung und Datensicherheit verbessern und sind sehr nützlich für Aufgaben, die häufig ausgeführt werden müssen. Anhand einiger Beispiele können Sie besser verstehen, wie gespeicherte Oracle-Prozeduren erstellt und verwendet werden.

Das obige ist der detaillierte Inhalt vonBeispiel einer gespeicherten Oracle-Prozedur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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