Oracle Gespeicherte PL/SQL-Prozedur und -Funktionen mit Beispielen
Prozeduren und Funktionen sind die Unterprogramme, die als Datenbankobjekte erstellt und in der Datenbank gespeichert werden kรถnnen. Sie kรถnnen auch innerhalb der anderen Blรถcke aufgerufen oder referenziert werden.
Darรผber hinaus werden wir die Hauptunterschiede zwischen diesen beiden Unterprogrammen behandeln. Auรerdem werden wir darรผber diskutieren Oracle Integrierte Funktionen.
Terminologien in PL/SQL-Unterprogrammen
Bevor wir etwas รผber PL/SQL-Unterprogramme lernen, werden wir die verschiedenen Terminologien besprechen, die Teil dieser Unterprogramme sind. Nachfolgend finden Sie die Terminologien, die wir besprechen werden.
Parameter
Der Parameter ist eine Variable oder ein Platzhalter eines beliebigen gรผltigen Parameters PL/SQL-Datentyp รber diesen Parameter tauscht das PL/SQL-Unterprogramm Werte mit dem Hauptcode aus. Dieser Parameter ermรถglicht die Eingabe von Daten an die Unterprogramme und die Ausgabe von Daten.tract aus diesen Unterprogrammen.
- Diese Parameter sollten zusammen mit den Unterprogrammen zum Zeitpunkt der Erstellung definiert werden.
- Diese Parameter sind in der Aufrufanweisung dieser Unterprogramme enthalten, um die Werte mit den Unterprogrammen zu interagieren.
- Der Datentyp des Parameters im Unterprogramm und in der aufrufenden Anweisung sollte identisch sein.
- Die Grรถรe des Datentyps sollte zum Zeitpunkt der Parameterdeklaration nicht angegeben werden, da die Grรถรe fรผr diesen Typ dynamisch ist.
Basierend auf ihrem Zweck werden Parameter als klassifiziert
- IN-Parameter
- OUT-Parameter
- IN OUT-Parameter
IN-Parameter
- Dieser Parameter wird zur Eingabe von Eingaben an die Unterprogramme verwendet.
- Es handelt sich um eine schreibgeschรผtzte Variable innerhalb der Unterprogramme. Ihre Werte kรถnnen innerhalb des Unterprogramms nicht geรคndert werden.
- In der aufrufenden Anweisung kรถnnen diese Parameter eine Variable, ein Literalwert oder ein Ausdruck sein. Beispielsweise kรถnnte es sich um einen arithmetischen Ausdruck wie โ5*8โ oder โa/bโ handeln, wobei โaโ und โbโ Variablen sind .
- Standardmรครig sind die Parameter vom Typ IN.
OUT-Parameter
- Dieser Parameter wird verwendet, um die Ausgabe der Unterprogramme abzurufen.
- Es handelt sich um eine Lese-/Schreibvariable innerhalb der Unterprogramme. Ihre Werte kรถnnen innerhalb der Unterprogramme geรคndert werden.
- In der aufrufenden Anweisung sollten diese Parameter immer eine Variable sein, die den Wert aus den aktuellen Unterprogrammen enthรคlt.
IN OUT-Parameter
- Dieser Parameter wird sowohl fรผr die Eingabe als auch fรผr den Erhalt der Ausgabe von den Unterprogrammen verwendet.
- Es handelt sich um eine Lese-/Schreibvariable innerhalb der Unterprogramme. Ihre Werte kรถnnen innerhalb der Unterprogramme geรคndert werden.
- In der aufrufenden Anweisung sollten diese Parameter immer eine Variable sein, um den Wert aus den Unterprogrammen zu speichern.
Diese Parametertypen sollten zum Zeitpunkt der Erstellung der Unterprogramme angegeben werden.
RรCKKEHR
RETURN ist das Schlรผsselwort, das den Compiler anweist, die Steuerung vom Unterprogramm auf die aufrufende Anweisung umzustellen. Im Unterprogramm bedeutet RETURN einfach, dass die Steuerung das Unterprogramm verlassen muss. Sobald der Controller das Schlรผsselwort RETURN im Unterprogramm findet, wird der Code danach รผbersprungen.
Normalerweise ruft der รผbergeordnete oder Hauptblock die Unterprogramme auf, und dann wechselt die Steuerung von diesen รผbergeordneten Blรถcken zu den aufgerufenen Unterprogrammen. RETURN im Unterprogramm gibt die Steuerung an den รผbergeordneten Block zurรผck. Bei Funktionen gibt die RETURN-Anweisung auch den Wert zurรผck. Der Datentyp dieses Werts wird immer zum Zeitpunkt der Funktionsdeklaration angegeben. Der Datentyp kann jeder gรผltige PL/SQL-Datentyp sein.
Was ist eine Prozedur in PL/SQL?
A Ablauf in PL/SQL ist eine Unterprogrammeinheit, die aus einer Gruppe von PL/SQL-Anweisungen besteht, die namentlich aufgerufen werden kรถnnen. Jede Prozedur in PL/SQL hat ihren eigenen eindeutigen Namen, mit dem sie angesprochen und aufgerufen werden kann. Diese Unterprogrammeinheit in der Oracle Datenbank wird als Datenbankobjekt gespeichert.
Hinweis: Das Unterprogramm ist nichts anderes als eine Prozedur und muss je nach Anforderung manuell erstellt werden. Nach der Erstellung werden sie als Datenbankobjekte gespeichert.
Nachfolgend sind die Merkmale der Prozedur-Unterprogrammeinheit in PL/SQL aufgefรผhrt:
- Prozeduren sind eigenstรคndige Blรถcke eines Programms, die im gespeichert werden kรถnnen Datenbank.
- Der Aufruf dieser PLSQL-Prozeduren kann unter Bezugnahme auf ihren Namen erfolgen, um die PL/SQL-Anweisungen auszufรผhren.
- Es wird hauptsรคchlich zum Ausfรผhren eines Prozesses in PL/SQL verwendet.
- Es kann verschachtelte Blรถcke enthalten oder innerhalb der anderen Blรถcke oder Pakete definiert und verschachtelt sein.
- Es enthรคlt einen Deklarationsteil (optional), einen Ausfรผhrungsteil und einen Ausnahmebehandlungsteil (optional).
- Die Werte kรถnnen รผbergeben werden Oracle Prozedur oder durch Parameter aus der Prozedur abgerufen.
- Diese Parameter sollten in der aufrufenden Anweisung enthalten sein.
- Eine Prozedur in SQL kann eine RETURN-Anweisung haben, um die Kontrolle an den aufrufenden Block zurรผckzugeben, sie kann jedoch keine Werte รผber die RETURN-Anweisung zurรผckgeben.
- Prozeduren kรถnnen nicht direkt aus SELECT-Anweisungen aufgerufen werden. Sie kรถnnen von einem anderen Block oder รผber das Schlรผsselwort EXEC aufgerufen werden.
Syntax
CREATE OR REPLACE PROCEDURE <procedure_name> ( <parameterl IN/OUT <datatype> .. . ) [ IS | AS ] <declaration_part> BEGIN <execution part> EXCEPTION <exception handling part> END;
- CREATE PROCEDURE weist den Compiler an, eine neue Prozedur zu erstellen Oracle. Das Schlรผsselwort โOR REPLACEโ weist die Kompilierung an, die vorhandene Prozedur (falls vorhanden) durch die aktuelle zu ersetzen.
- Der Prozedurname sollte eindeutig sein.
- Das Schlรผsselwort โISโ wird verwendet, wenn die gespeicherte Prozedur ausgefรผhrt wird Oracle ist in einige andere Blรถcke verschachtelt. Wenn das Verfahren eigenstรคndig ist, wird โASโ verwendet. Abgesehen von diesem Codierungsstandard haben beide die gleiche Bedeutung.
Beispiel 1: Prozedur erstellen und mit EXEC aufrufen
In diesem Beispiel erstellen wir eine Oracle Prozedur, die den Namen als Eingabe verwendet und die Begrรผรungsnachricht als Ausgabe ausgibt. Wir werden den EXEC-Befehl verwenden, um die Prozedur aufzurufen.
CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2) IS BEGIN dbms_output.put_line (โWelcome '|| p_name); END; / EXEC welcome_msg (โGuru99โ);
Code Erlรคuterung:
- Code Linie 1: Erstellen der Prozedur mit dem Namen โwelcome_msgโ und einem Parameter โp_nameโ vom Typ โINโ.
- Code Linie 4: Drucken der Willkommensnachricht durch Verketten des Eingabenamens.
- Die Prozedur wurde erfolgreich kompiliert.
- Code Linie 7: Aufruf der Prozedur mit dem EXEC-Befehl und dem Parameter 'Guru99. Die Prozedur wird ausgefรผhrt und die Meldung โWillkommenโ wird ausgedruckt. Guru99 ".
Was ist Funktion?
Functions ist ein eigenstรคndiges PL/SQL-Unterprogramm. Wie PL/SQL-Prozeduren haben Funktionen einen eindeutigen Namen, mit dem sie referenziert werden kรถnnen. Diese werden als PL/SQL-Datenbankobjekte gespeichert. Nachfolgend sind einige Merkmale der Funktionen aufgefรผhrt.
- Funktionen sind eigenstรคndige Blรถcke, die hauptsรคchlich zu Berechnungszwecken verwendet werden.
- Die Funktion verwendet das Schlรผsselwort RETURN, um den Wert zurรผckzugeben, und der Datentyp hierfรผr wird zum Zeitpunkt der Erstellung definiert.
- Eine Funktion sollte entweder einen Wert zurรผckgeben oder die Ausnahme auslรถsen, dh die Rรผckgabe ist in Funktionen obligatorisch.
- Funktionen ohne DML-Anweisungen kรถnnen direkt in der SELECT-Abfrage aufgerufen werden, wรคhrend Funktionen mit DML-Operationen nur von anderen PL/SQL-Blรถcken aufgerufen werden kรถnnen.
- Es kann verschachtelte Blรถcke enthalten oder innerhalb der anderen Blรถcke oder Pakete definiert und verschachtelt sein.
- Es enthรคlt einen Deklarationsteil (optional), einen Ausfรผhrungsteil und einen Ausnahmebehandlungsteil (optional).
- Die Werte kรถnnen an die Funktion รผbergeben oder รผber die Parameter aus der Prozedur abgerufen werden.
- Diese Parameter sollten in der aufrufenden Anweisung enthalten sein.
- Eine PLSQL-Funktion kann den Wert auch รผber OUT-Parameter zurรผckgeben, auรer รผber RETURN.
- Da der Wert immer zurรผckgegeben wird, wird er in aufrufenden Anweisungen immer von einem Zuweisungsoperator begleitet, um die Variablen aufzufรผllen.
Syntax
CREATE OR REPLACE FUNCTION <procedure_name> ( <parameterl IN/OUT <datatype> ) RETURN <datatype> [ IS | AS ] <declaration_part> BEGIN <execution part> EXCEPTION <exception handling part> END;
- CREATE FUNCTION weist den Compiler an, eine neue Funktion zu erstellen. Das Schlรผsselwort โOR REPLACEโ weist den Compiler an, die vorhandene Funktion (falls vorhanden) durch die aktuelle zu ersetzen.
- Der Funktionsname sollte eindeutig sein.
- Der RETURN-Datentyp sollte erwรคhnt werden.
- Das Schlรผsselwort โISโ wird verwendet, wenn die Prozedur in andere Blรถcke eingebettet ist. Wenn das Verfahren eigenstรคndig ist, wird โASโ verwendet. Abgesehen von diesem Codierungsstandard haben beide die gleiche Bedeutung.
Beispiel 1: Funktion erstellen und mit Anonymous Block aufrufen
In diesem Programm erstellen wir eine Funktion, die den Namen als Eingabe verwendet und die Willkommensnachricht als Ausgabe zurรผckgibt. Wir werden einen anonymen Block und eine Select-Anweisung verwenden, um die Funktion aufzurufen.
CREATE OR REPLACE FUNCTION welcome_msgJune ( p_name IN VARCHAR2) RETURN VAR.CHAR2 IS BEGIN RETURN (โWelcome โ|| p_name); END; / DECLARE lv_msg VARCHAR2(250); BEGIN lv_msg := welcome_msg_func (โGuru99โ); dbms_output.put_line(lv_msg); END; SELECT welcome_msg_func(โGuru99:) FROM DUAL;
Code Erlรคuterung:
- Code Linie 1: Erstellen der Oracle Funktion mit dem Namen โwelcome_msg_funcโ und einem Parameter โp_nameโ vom Typ โINโ.
- Code Linie 2: Deklaration des Rรผckgabetyps als VARCHAR2
- Code Linie 5: Gibt den verketteten Wert โWillkommenโ und den Parameterwert zurรผck.
- Code Linie 8: Anonymer Block zum Aufrufen der obigen Funktion.
- Code Linie 9: Deklarieren der Variablen mit dem gleichen Datentyp wie der Rรผckgabedatentyp der Funktion.
- Code Linie 11: Rufen Sie die Funktion auf und fรผllen Sie den Rรผckgabewert in die Variable โlv_msgโ ein.
- Code Linie 12Ausgabe des Variablenwerts. Die Ausgabe lautet: โWillkommenโ Guru99 "
- Code Linie 14: Aufruf derselben Funktion รผber die SELECT-Anweisung. Der Rรผckgabewert wird direkt an die Standardausgabe weitergeleitet.
รhnlichkeiten zwischen Verfahren und Funktion
- Beide kรถnnen von anderen PL/SQL-Blรถcken aufgerufen werden.
- Wenn die im Unterprogramm ausgelรถste Ausnahme nicht im Unterprogramm behandelt wird Ausnahmebehandlung Abschnitt, dann wird es an den aufrufenden Block weitergegeben.
- Beide kรถnnen beliebig viele Parameter haben.
- Beide werden in PL/SQL als Datenbankobjekte behandelt.
Verfahren vs. Funktion: Hauptunterschiede
| Ablauf | Funktion |
|---|---|
| Wird hauptsรคchlich zur Ausfรผhrung eines bestimmten Prozesses verwendet | Wird hauptsรคchlich zur Durchfรผhrung einiger Berechnungen verwendet |
| Aufruf in SELECT-Anweisung nicht mรถglich | Eine Funktion, die keine DML-Anweisungen enthรคlt, kann in der SELECT-Anweisung aufgerufen werden |
| Verwenden Sie den OUT-Parameter, um den Wert zurรผckzugeben | Verwenden Sie RETURN, um den Wert zurรผckzugeben |
| Es ist nicht zwingend erforderlich, den Wert zurรผckzugeben | Es ist zwingend erforderlich, den Wert zurรผckzugeben |
| RETURN beendet einfach die Steuerung des Unterprogramms. | RETURN verlรคsst die Steuerung aus dem Unterprogramm und gibt auch den Wert zurรผck |
| Der Rรผckgabedatentyp wird zum Zeitpunkt der Erstellung nicht angegeben | Der Rรผckgabedatentyp ist zum Zeitpunkt der Erstellung obligatorisch |
Integrierte Funktionen in PL/SQL
PL / SQL enthรคlt verschiedene integrierte Funktionen zum Arbeiten mit Zeichenfolgen und Datumsdatentypen. Hier sehen wir uns die hรคufig verwendeten Funktionen und deren Verwendung an.
Konvertierungsfunktionen
Diese integrierten Funktionen werden verwendet, um einen Datentyp in einen anderen Datentyp zu konvertieren.
| Funktionsname | Anwendungsbereich | Beispiel |
|---|---|---|
| TO_CHAR | Konvertiert den anderen Datentyp in einen Zeichendatentyp | TO_CHAR(123); |
| TO_DATE (Zeichenfolge, Format) | Konvertiert die angegebene Zeichenfolge in ein Datum. Die Zeichenfolge sollte mit dem Format รผbereinstimmen. |
TO_DATE('2015-JAN-15', 'YYYY-MON-DD'); Ausgang: 1 / 15 / 2015 |
| TO_NUMBER (Text, Format) |
Konvertiert den Text in den Zahlentyp des angegebenen Formats. Informat '9' gibt die Anzahl der Ziffern an |
Wรคhlen Sie TO_NUMBER('1234โฒ,'9999') aus Dual;
Ausgang: 1234 Wรคhlen Sie TO_NUMBER('1,234.45โฒ,'9,999.99') aus Dual; Ausgang: 1234 |
String-Funktionen
Dies sind die Funktionen, die fรผr den Zeichendatentyp verwendet werden.
| Funktionsname | Anwendungsbereich | Beispiel |
|---|---|---|
| INSTR(Text, String, Start, Vorkommen) | Gibt die Position eines bestimmten Textes in der angegebenen Zeichenfolge an.
|
Wรคhlen Sie INSTR('AEROPLANE','E',2,1) aus dual
Ausgang: 2 Wรคhlen Sie INSTR('AEROPLANE','E',2,2) aus dual Ausgang: 9 (2nd Vorkommen von E) |
| SUBSTR (Text, Anfang, Lรคnge) | Gibt den Teilstringwert des Hauptstrings an.
|
Wรคhlen Sie substr('aeroplane',1,7) aus dual aus
Ausgang: Aeropla |
| UPPER (Text) | Gibt den Groรbuchstaben des bereitgestellten Textes zurรผck | Wรคhlen Sie Upper('guru99') aus Dual;
Ausgang: GURU99 |
| UNTERE (Text) | Gibt den Kleinbuchstaben des bereitgestellten Textes zurรผck | Wรคhlen Sie unter โDualโ die untere Option (โAerOpLaneโ).
Ausgang: Flugzeug |
| INITCAP (Text) | Gibt den angegebenen Text mit dem Anfangsbuchstaben in Groรbuchstaben zurรผck. | Wรคhlen Sie ('guru99') aus Dual
Ausgang: Guru99 Wรคhlen Sie ('meine Geschichte') aus Dual Ausgang: Meine Geschichte |
| LรNGE (Text) | Gibt die Lรคnge der angegebenen Zeichenfolge zurรผck | Wรคhlen Sie LรNGE ('guru99') aus Dual;
Ausgang: 6 |
| LPAD (Text, Lรคnge, pad_char) | Fรผllt die Zeichenfolge auf der linken Seite fรผr die angegebene Lรคnge (Gesamtzeichenfolge) mit dem angegebenen Zeichen auf | Wรคhlen Sie LPAD('guru99', 10, '$') aus dual;
Ausgang: $$$$guru99 |
| RPAD (Text, Lรคnge, pad_char) | Fรผllt die Zeichenfolge auf der rechten Seite fรผr die angegebene Lรคnge (Gesamtzeichenfolge) mit dem angegebenen Zeichen auf | Wรคhlen Sie RPAD('guru99โฒ,10,'-') aus Dual aus
Ausgang: guru99โ- |
| LTRIM (Text) | Entfernt den fรผhrenden Leerraum aus dem Text | Wรคhlen Sie LTRIM(' Guru99') aus dem Dual;
Ausgang: Guru99 |
| RTRIM (Text) | Entfernt den Leerraum am Ende des Textes | Wรคhlen Sie RTRIM('Guru99 ') aus dem Dual;
Ausgang; Guru99 |
Datumsfunktionen
Dies sind Funktionen, die zur Manipulation von Datumsangaben verwendet werden.
| Funktionsname | Anwendungsbereich | Beispiel |
|---|---|---|
| ADD_MONTHS (Datum, Anzahl Monate) | Fรผgt dem Datum die angegebenen Monate hinzu | ADD_MONTH('2015-01-01',5);
Ausgang: 05 / 01 / 2015 |
| SYSDATUM | Gibt das aktuelle Datum und die aktuelle Uhrzeit des Servers zurรผck | Wรคhlen Sie SYSDATE aus Dual;
Ausgang: 10 4:2015:2 Uhr |
| TRUNC | Runden Sie die Datumsvariable auf den niedrigeren mรถglichen Wert | select sysdate, TRUNC(sysdate) from dual;
Ausgang: 10 4:2015:2 12 |
| ROUND | Rundet das Datum auf die nรคchste Grenze, entweder hรถher oder niedriger. | Wรคhlen Sie โSysdateโ, โROUND(Sysdate)โ aus โDualโ.
Ausgang: 10 4:2015:2 14 |
| MONATE_BETWEEN | Gibt die Anzahl der Monate zwischen zwei Daten zurรผck | Wรคhlen Sie MONTHS_BETWEEN (Sysdate+60, Sysdate) aus Dual
Ausgang: 2 |
Zusammenfassung
In diesem Kapitel haben wir Folgendes gelernt.
- So erstellen Sie eine Prozedur und verschiedene Mรถglichkeiten, sie aufzurufen
- So erstellen Sie eine Funktion und verschiedene Arten, sie aufzurufen
- รhnlichkeiten und Unterschiede zwischen Verfahren und Funktion
- Allgemeine Terminologien fรผr Parameter und RETURN in PL/SQL-Unterprogrammen
- Gemeinsame integrierte Funktionen in Oracle PL / SQL


