Standalone-Unterprogramme erstellen und verwalten
Sie können Standalone-PL/SQL-Unterprogramme erstellen und verwalten.
Hinweis: Um die Tutorials in diesem Dokument ausführen zu können, müssen Sie über SQL Developer als Benutzer HR mit Oracle Database verbunden sein.
Info zur Unterprogrammstruktur
Unterprogramme folgen der PL/SQL-Blockstruktur. Das bedeutet, dass sie über Folgendes verfügen:
-
Deklarative Komponente (optional)
Der deklarative Teil enthält Deklarationen für Typen, Konstanten, Variablen, Ausnahmen, deklarierte Cursor und verschachtelte Unterprogramme. Diese Elemente sind im Unterprogramm selbst vorhanden. Sobald die Ausführung des Unterprogramms abgeschlossen ist, verschwinden sie.
-
Ausführbares Teil (erforderlich)
Die ausführbare Komponente umfasst Anweisungen, über die Werte zugewiesen, die Ausführung gesteuert und Daten manipuliert werden.
-
Eine Komponente für das Ausnahmehandling (optional)
Die Komponente für die Ausnahmehandling enthält Code für die Verarbeitung von Ausnahmen (Laufzeitfehler).
Kommentare können überall im PL/SQL-Code vorkommen. Sie werden vom PL/SQL-Compiler ignoriert. Kommentare machen Programme leichter lesbar und verständlich. Ein einzeiliger Kommentar beginnt mit einem doppelten Bindestrich (--) und geht bis zum Zeilenende. Mehrzeilige Kommentare beginnen mit einem Schrägstrich und einem Stern (/*) und enden mit einem Schrägstrich und einem Stern (*/).
Die Struktur eines Verfahrens lautet:
PROCEDURE name [ ( parameter_list ) ]
{ IS | AS }
[ declarative_part ]
BEGIN -- executable part begins
statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
otherwise, executable part ends */
Die Struktur einer Funktion ähnelt der einer Prozedur, mit der Ausnahme, dass sie eine RETURN-Klausel und mindestens eine RETURN-Anweisung umfasst (sowie einige optionale Klauseln, die nicht in diesem Dokument behandelt werden):
FUNCTION name [ ( parameter_list ) ] RETURN data_type [ clauses ]
{ IS | AS }
[ declarative_part ]
BEGIN -- executable part begins
-- at least one statement must be a RETURN statement
statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
otherwise, executable part ends */
Bei welchem Code, der mit PROCEDURE oder FUNCTION beginnt und vor IS oder AS endet, handelt es sich um die Signatur des UnterProgramms. Die deklarativen, ausführbaren und Ausnahmen behandelnden Teile machen den Unterprogramm-Body aus. Die Syntax für Exception-Handler befindet sich unter "Info zu Ausnahmen und Ausnahme-Handlern".
Siehe auch: Oracle Database PL/SQL Language Reference, um weitere Informationen zu Unterprogrammteilen zu erhalten.
Tutorial: Standalone-Prozedur erstellen
Dieses Tutorial zeigt, wie das Tool "Prozedur erstellen" zur Erstellung einer Standalone-Prozedur mit dem Namen ADD_EVALUATION verwendet, die eine Zeile zur Tabelle EVALUATIONS hinzufügt.
Die Tabelle EVALUATIONS wurde in Beispiel 4-1 erstellt.
Um eine Standalone-Prozedur zu erstellen, verwenden Sie entweder das SQL Developer-Tool CREATE PROCEDURE oder die DDL-Anweisung CREATE PROCEDURE.
Schritte zum Erstellen einer Standalone-Prozedur mit dem Tool "Prozedur erstellen":
-
Blenden Sie im Schritt "Verbindungen" hr_conn ein.
-
Klicken Sie in der Liste der Schemaobjekttypen mit der rechten Maustaste auf Prozeduren.
-
Klicken Sie in der Auswahlliste auf Neue Prozedur.
Das Fenster "Prozedur erstellen" wird geöffnet.
-
Akzeptieren Sie für "Schema" den Standardwert HR.
-
Ändern Sie als Namen PROCEDURE1 in
ADD_EVALUATION. -
Klicken Sie auf das Symbol Parameter hinzufügen.
Unter den Spaltenüberschriften wird eine Zeile angezeigt. Die Felder haben die folgenden Standardwerte: Name, PARAM1; Modus, IN; Keine Kopie, deaktiviert; Datentyp, VARCHAR2; Standardwert, leer.
-
Ändern Sie als Namen PARAM1 in
EVALUATION_ID. -
Akzeptieren Sie für Modus den Standardwert IN.
-
Wählen Sie unter "Datentyp" im Menü die Option NUMBER.
-
Lassen Sie "Standardwert" leer.
-
Geben Sie einen zweiten Parameter ein, indem Sie die Schritte 6 bis 10 mit dem Namen
EMPLOYEE_IDund der Datentyp NUMBER wiederholen. -
Geben Sie einen dritten Parameter an, indem Sie die Schritte 6 bis 10 mit dem Namen
EVALUATION_DATEund Datentyp DATE wiederholen. -
Fügen sie einen vierten Parameter hinzu. Wiederholen Sie die Schritte 6 bis 10 mit dem Namen
JOB_IDund des Datentyps VARCHAR2. -
Geben Sie einen fünften Parameter an, indem Sie die Schritte 6 bis 10 mit dem Namen
MANAGER_IDund der Typ NUMBER wiederholen. -
fügen Sie einen sechsten Parameter hinzu. Wiederholen Sie die Schritte 6 bis 10 mit dem Namen
DEPARTMENT_IDund des Datentyps NUMBER. -
Hinzufügen Sie einen siebten Parameter, indem Sie die Schritte 6 bis 10 mit dem Namen
TOTAL_SCOREund Datentyp NUMBER wiederholen. -
Klicken Sie auf OK.
CREATE OR REPLACE PROCEDURE ADD_EVALUATION ( EVALUATION_ID IN NUMBER , EMPLOYEE_ID IN NUMBER , EVALUATION_DATE IN DATE , JOB_ID IN VARCHAR2 , MANAGER_ID IN NUMBER , DEPARTMENT_ID IN NUMBER , TOTAL_SCORE IN NUMBER ) AS BEGIN NULL; END ADD_EVALUATION;Der Titel des Fensters ADD_EVALUATION ist kursiv geschrieben. Damit wird angegeben, dass die Prozedur noch nicht in der Datenbank gespeichert ist.
Da der Ausführungsteil der Prozedur nur die NULL-Anweisung enthält, führt die Prozedur keinen Vorgang aus.
-
Ersetzen Sie die NULL-Anweisung durch diese Anweisung:
INSERT INTO EVALUATIONS ( evaluation_id, employee_id, evaluation_date, job_id, manager_id, department_id, total_score ) VALUES ( ADD_EVALUATION.evaluation_id, ADD_EVALUATION.employee_id, ADD_EVALUATION.evaluation_date, ADD_EVALUATION.job_id, ADD_EVALUATION.manager_id, ADD_EVALUATION.department_id, ADD_EVALUATION.total_score );(Die Qualifizierung der Parameternamen durch den Namen der Prozedur stellt sicher, dass diese nicht mit gleichnamigen Spalten verwechselt werden können.)
-
Wählen Sie im Menü "Datei" die Option Speichern.
Oracle Database kompiliert die Prozedur und speichert sie. Der Titel des Fensterbereichs ADD_EVALUATION wird nun nicht mehr in Kursivschrift dargestellt. Im Bereich "Nachricht - Protokoll" wird die Meldung Compiled angezeigt.
Siehe:
-
Oracle SQL Developer User's Guide: Ein weiteres Beispiel für die Verwendung von SQL Developer zum Erstellen einer Standalone-Prozedur
-
"Info zu Data Definition Language-(DDL-)Anweisungen" für allgemeine Informationen, die für die Anweisung CREATE PROCEDURE gelten
-
Oracle Database PL/SQL Language Reference für Informationen zur Anweisung CREATE PROCEDURE
Tutorial: Standalone-Funktion erstellen
In diesem Tutorial wird erläutert, wie Sie mit dem Tool "Funktion erstellen" eine Standalone-Funktion mit dem Namen CALCULATE_SCORE erstellen können, die drei Parameter enthält und einen Wert vom Typ NUMBER zurückgibt.
Verwenden Sie entweder das SQL Developer-Tool CREATE FUNCTION oder die DDL-Anweisung CREATE FUNCTION, um eine Standalone-Funktion zu erstellen.
Schritte zum Erstellen einer Standalone-Funktion mit dem Tool "Funktion erstellen":
-
Blenden Sie im Schritt "Verbindungen" hr_conn ein.
-
Klicken Sie in der Liste der Schemaobjekttypen mit der rechten Maustaste auf Funktionen.
-
Klicken Sie in der Auswahlliste auf Neue Funktion.
Das Fenster "Funktion erstellen" wird geöffnet.
-
Akzeptieren Sie für "Schema" den Standardwert HR.
-
Ändern Sie als Namen FUNCTION1 in
CALCULATE_SCORE. -
Wählen Sie unter "Rückgabetyp" die Option NUMBER aus dem Menü.
-
Klicken Sie auf das Symbol Parameter hinzufügen.
Unter den Spaltenüberschriften wird eine Zeile angezeigt. Die Felder haben die folgenden Standardwerte: Name, PARAM1; Modus, IN; Keine Kopie, deaktiviert; Datentyp, VARCHAR2; Standardwert, leer.
-
Ändern Sie für "Name" PARAM1 in
cat. -
Akzeptieren Sie für Modus den Standardwert IN.
-
Übernehmen Sie für {\b Data Type} den Standardwert VARCHAR2.
-
Lassen Sie "Standardwert" leer.
-
Add a second parameter by repeating steps 7 through 11 with the Name
scoreand the Data Type NUMBER. -
Add a third parameter by repeating steps 7 through 11 with the Name
weightand the Data Type NUMBER. -
Klicken Sie auf OK.
Das Fenster CALCULATE_SCORE wird geöffnet und zeigt die CREATE FUNCTION-Anweisung, mit der die Funktion erstellt wurde:
CREATE OR REPLACE FUNCTION CALCULATE_SCORE ( CAT IN VARCHAR2 , SCORE IN NUMBER , WEIGHT IN NUMBER ) RETURN NUMBER AS BEGIN RETURN NULL; END CALCULATE_SCORE;Der Titel des CALCULATE_SCORE-Fensters wird in Kursivschrift angezeigt, was darauf hinweist, dass die Funktion noch nicht in der Datenbank gespeichert ist.
Da die einzige Anweisung im Ausführungsbereich der Funktion RETURN NULL lautet, bleibt die Funktion wirkungslos.
-
NULL durch
score * weightersetzen. -
Wählen Sie im Menü "Datei" die Option Speichern.
Die Funktion wird von der Oracle-Datenbank kompiliert und gespeichert. Der Titel des Fensterbereichs CALCULATE_SCORE wird nicht mehr in Kursivschrift dargestellt. Im Bereich "Nachricht - Protokoll" wird die Meldung
Compiledangezeigt.
Siehe:
-
"Info zu Data Definition Language-(DDL-)Anweisungen" für allgemeine Informationen, die für die CREATE FUNCTION-Anweisung gelten
-
Oracle Database PL/SQL Language Reference für Informationen zur Anweisung CREATE FUNCTION
Standalone-Unterprogramme ändern
Um ein Standalone-Unterprogramm zu ändern, verwenden Sie entweder das SQL Developer-Tool Edit oder die DDL-Anweisung ALTER PROCEDURE oder ALTER FUNCTION.
Schritte zum Ändern eines Standalone-Unterprogramms mit dem Tool "Bearbeiten":
-
Blenden Sie im Schritt "Verbindungen" hr_conn ein.
-
Blenden Sie in der Liste der Schemaobjekttypen entweder Funktionen oder Prozeduren ein.
Eine Liste der Funktionen bzw. Prozeduren wird angezeigt.
-
Klicken Sie auf die zu ändernde Funktion bzw. Prozedur.
Rechts neben dem Fenster "Verbindungen" wird eine Rahmenansicht angezeigt. Seine oberste Registerkarte zeigt den Namen des zu ändernden Unterprogramms an. Im Fensterbereich "Code" wird der Code angezeigt, mit dem das Unterprogramm erstellt wurde.
Der Codebereich befindet sich im Schreibmodus. (Wenn Sie auf das Bleistiftsymbol klicken, wird der Modus vom Schreibmodus in den schreibgeschützten Modus oder umgekehrt geändert.)
-
Ändern Sie den Code im Bereich "Code".
Der Titel des Fensterbereichs wird nun kursiv dargestellt, was anzeigt, dass die Änderung noch nicht in der Datenbank gespeichert wurde.
-
Wählen Sie im Menü "Datei" die Option Speichern.
Oracle Database kompiliert das Unterprogramm und speichert es. Der Titel des Bereichs wird nicht mehr in Kursivschrift angezeigt. Im Bereich "Nachricht - Protokoll" wird die Meldung
Compiledangezeigt.
Siehe:
-
"Info zu Data Definition Language-(DDL-)Anweisungen" für allgemeine Informationen, die für die ALTER PROCEDURE- und ALTER FUNCTION-Anweisungen gelten
-
Oracle Database PL/SQL Language Reference für Informationen zur Anweisung ALTER PROCEDURE
-
Oracle Database PL/SQL Language Reference für Informationen zur ALTER-FUNCTION-Anweisung
Tutorial: Standalone-Funktion testen
In diesem Tutorial wird gezeigt, wie Sie mit dem SQL Developer-Tool Run die Standalone-Funktion CALCULATE_SCORE testen.
Schritte zum Testen der Funktion CALCULATE_SCORE mit dem Tool "Ausführen":
-
Blenden Sie im Schritt "Verbindungen" hr_conn ein.
-
Blenden Sie in der Liste der Schemaobjekttypen Funktionen ein.
-
Klicken Sie in der Funktionsliste mit der rechten Maustaste auf CALCULATE_SCORE.
-
Klicken Sie in der Auswahlliste auf Ausführen.
Das Fenster "PL/SQL ausführen" wird geöffnet. Der zugehörige PL/SQL-Blockrahmen umfasst den folgenden Code:
v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => SCORE, WEIGHT => WEIGHT ); -
Ändern Sie die Werte von SCORE und WEIGHT in
8bzw.0.2:v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => 8, WEIGHT => 0.2 ); -
Klicken Sie auf OK.
Im Bereich "Code" wird das Fenster "Wird ausgeführt" geöffnet, in dem das folgende Ergebnis angezeigt wird:
Connecting to the database hr_conn. Process exited. Disconnecting from the database hr_conn.Rechts neben der Registerkarte {\b Running} befindet sich die Registerkarte {\b Output Variables}.
-
Klicken Sie auf die Registerkarte Ausgabevariablen.
Es werden zwei Schritte angezeigt: Variable und Wert, die Werte <Rückgabewert> und 1,6 enthalten.
Siehe auch: Oracle SQL Developer - Benutzerdokumentation für Informationen zur Verwendung von SQL Developer zum Ausführen und Debuggen von Prozeduren und Funktionen
Standalone-Unterprogramme löschen
Um ein Standalone-Unterprogramm zu löschen, verwenden Sie entweder den SQL Developer Connections-Frame und das DROP-Tool oder die DDL-Anweisung DROP PROCEDURE oder DROP FUNCTION.
Achtung: Löschen Sie die Prozedur ADD_EVALUATION oder die Funktion CALCULATE_SCORE nicht. Sie benötigen sie für spätere Tutorials. Wenn Sie das Löschen von Unterprogrammen üben möchten, erstellen Sie einfache Unterprogramme und löschen Sie diese.
Schritte zum Löschen eines Standalone-Unterprogramms mit dem Tool "Löschen":
-
Blenden Sie im Schritt "Verbindungen" hr_conn ein.
-
Blenden Sie in der Liste der Schemaobjekttypen entweder Funktionen oder Prozeduren ein.
-
Klicken Sie in der Liste der Funktionen oder Prozeduren mit der rechten Maustaste auf den Namen der zu löschenden Funktion bzw. Prozedur.
-
Klicken Sie in der Auswahlliste auf Löschen.
-
Klicken Sie im Drop-Fenster auf Anwenden.
-
Klicken Sie im Bestätigungs-Fenster auf OK.
Siehe:
-
"Info zu Data Definition Language-(DDL-)Anweisungen" für allgemeine Informationen, die für die DROP PROCEDURE- und DROP FUNCTION-Anweisungen gelten
-
Oracle Database SQL Language Reference für Informationen zur Anweisung DROP PROCEDURE
-
Oracle Database SQL Language Reference für Informationen über die DROP FUNCTION-Anweisung