Oracle Gespeicherte PL/SQL-Prozedur und -Funktionen mit Beispielen

In diesem Tutorial erfahren Sie ausfรผhrlich, wie Sie die benannten Blรถcke (Prozeduren und Funktionen) erstellen und ausfรผhren.

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

  1. IN-Parameter
  2. OUT-Parameter
  3. 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.

Funktionen in PL/SQL

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.

Funktionen in PL/SQL

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.

  • text โ€“ Hauptzeichenfolge
  • string โ€“ Text, der durchsucht werden muss
  • start โ€“ Startposition der Suche (optional)
  • รœbereinstimmung โ€“ Vorkommen der gesuchten Zeichenfolge (optional)
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.

  • Text โ€“ Hauptzeichenfolge
  • Start โ€“ Ausgangsposition
  • Lรคnge โ€“ Lรคnge der Unterzeichenfolge
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

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: