Heim >Datenbank >Oracle >Was ist der Unterschied zwischen gespeicherten Prozeduren und Funktionen in Oracle?

Was ist der Unterschied zwischen gespeicherten Prozeduren und Funktionen in Oracle?

青灯夜游
青灯夜游Original
2022-02-22 18:38:558929Durchsuche

Unterschied: 1. Gespeicherte Prozeduren werden zum Abschließen bestimmter Vorgänge oder Aufgaben in der Datenbank verwendet, während Funktionen für bestimmte Daten verwendet werden. 2. Der Programmheader der gespeicherten Prozedur wird mit PROCEDURE deklariert und bei der Deklaration ist kein Rückgabetyp erforderlich , während das Programm der Funktion FUNCTION in der Header-Deklaration verwendet und den Rückgabetyp bei der Deklaration beschreibt.

Was ist der Unterschied zwischen gespeicherten Prozeduren und Funktionen in Oracle?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Oracle 11g-Version, Dell G3-Computer.

Gespeicherte Prozedur

Gespeicherte Prozedur (Stored Procedure) ist eine Reihe von SQL-Anweisungen zum Ausführen bestimmter Funktionen, die kompiliert und in der Datenbank gespeichert werden. Der Benutzer führt eine gespeicherte Prozedur aus, indem er ihren Namen angibt und Parameter angibt (sofern die gespeicherte Prozedur über Parameter verfügt). Gespeicherte Prozeduren sind ein wichtiges Objekt in der Datenbank, und jede gut gestaltete Datenbankanwendung sollte gespeicherte Prozeduren verwenden. Eine gespeicherte Prozedur ist eine durch Flusskontrolle und SQL-Anweisungen geschriebene Prozedur, die auf dem Datenbankserver kompiliert und optimiert wird. Sie muss nur aufgerufen werden, wenn das Anwendungsprogramm sie verwendet. In ORACLE können mehrere zusammengehörige Prozeduren zu einem Programmpaket zusammengefasst werden.

Vorteile:

1. Gespeicherte Prozeduren werden nur dann kompiliert, wenn sie in der Zukunft ausgeführt werden. Es ist nicht erforderlich, sie jedes Mal neu zu kompilieren. Daher kann die Verwendung gespeicherter Prozeduren die Ausführungsgeschwindigkeit der Datenbank verbessern.

2. Bei der Ausführung komplexer Vorgänge in der Datenbank (z. B. Aktualisieren, Einfügen, Abfragen und Löschen für mehrere Tabellen) kann dieser komplexe Vorgang in einer gespeicherten Prozedur gekapselt und in Verbindung mit der von der Datenbank bereitgestellten Transaktionsverarbeitung verwendet werden.

3. Gespeicherte Prozeduren können wiederverwendet werden, was die Arbeitsbelastung von Datenbankentwicklern verringern kann.

4. Hohe Sicherheit, Sie können festlegen, dass nur ein bestimmter Benutzer das Recht hat, den angegebenen gespeicherten Prozess zu verwenden.

Der Unterschied zwischen gespeicherten Prozeduren und Funktionen

Der größte Unterschied zwischen den beiden ist:

1). Funktionen geben immer Daten an den Aufrufer zurück und geben im Allgemeinen nur einen Wert zurück (Prozeduren) geben Daten nicht direkt zurück, können jedoch die Werte von Ausgabeparametern ändern. Dies kann ungefähr als Rückgabe von Werten angesehen werden, und die Anzahl der Werte von Ausgabeparametern einer gespeicherten Prozedur ist unbegrenzt.

Wenn Sie aus allgemeiner Anwendungssicht keinen Rückgabewert oder mehrere Rückgabewerte benötigen, verwenden Sie eine gespeicherte Prozedur. Wenn Sie nur einen Rückgabewert verwenden, verwenden Sie eine Funktion.

2. In der Funktionsdefinition können nur DDL-Anweisungen (z. B. Select usw.) verwendet werden. DML-Anweisungen werden hauptsächlich in Prozeduren verwendet (bei der Ausführung komplexer Vorgänge in der Datenbank, z. B. Aktualisieren, Einfügen, Abfragen und Löschen). mehrere Tabellen).

Wenn Sie die ausgewählte Ergebnismenge verwenden möchten, müssen Sie einen Cursor verwenden

Die Programm-Header-Deklaration verwendet FUNCTION Der PL/SQL-Block muss mindestens eine gültige RETURN-Anweisung enthaltenSie können die 3 Parametermodi IN/OUT/IN OUT verwenden Sie kann nicht unabhängig ausgeführt werden und muss als Teil eines Ausdrucks aufgerufen werdenDie RETURN-Anweisung gibt einen Wert zurück, und der Wert stimmt mit dem Deklarationsteil überein. Variablen können auch über Parameter vom Typ OUT ausgegeben werden. Funktionen können in SQL-Anweisungen (DML oder SELECT) aufgerufen werden

Was ist der Unterschied zwischen gespeicherten Prozeduren und Funktionen in Oracle?

Aktuelle Beispiele

1. Funktion

(1) Funktion erstellen

create or replace function get_salary(
    dept_no number,
    emp_count **out** number)
    return number IS
    v_sum number;begin
    ...exception    ...end get_salary

(2) Funktion aufrufen

declare 
    v_num number;
    v_sum number;begin
    ...(这里应该出现函数名表示调用)end

2. Gespeicherte Prozedur

(1) Gespeicherte Prozedur erstellen

create or replace procedure pro_demo(
    dept_no number default 10,
    sal_sum out number,
    emp_count out number)
IS
begin
    ...
exception
    ...
end proc_demo;

(2 ) Rufen Sie die gespeicherte Prozedur auf

Aufrufsyntax:

1), exec ;

2), ausführen ;

3), Aufruf direkt im PL/SQL-Anweisungsblock.

Zum Beispiel:

declare
    v_num number;
    v_sum number(8,2);
begin
    procedure pro_demo(dept_no=>1,sal_num=>900,emp_count=>10)(这里出现存储过程名表示调用,传递参数值用=>)
end;

3. Lokale gespeicherte Prozedur

In PL/SQL können Sie auch eine lokal gespeicherte Prozedur im Deklarationsblock erstellen, ohne das Schlüsselwort create zu verwenden. Der Zweck ist: Die gespeicherte Prozedur muss nicht gespeichert werden Prozedur in der Datenbank Um die beim Ändern der Datenbank verursachten Probleme zu vermeiden, besteht ihr Hauptverwendungsszenario darin, eine gespeicherte Prozedur vorübergehend zu verwenden, anstatt sie in Zukunft viele Male wiederzuverwenden.

Beispiel:

declare
    v_num number;
    v_sum number(8,2);
procedure proc_demo(
    dept_no number default 10,
    sal_sum out number,
    emp_count out number)
IS
begin
    ...(这里不用出现存储过程名)
exception
    ...
end proc_demo;

Empfohlenes Tutorial: „Oracle Tutorial

Der Unterschied zwischen gespeicherten Prozeduren und Funktionen

Gespeicherte Prozeduren

Funktion ?? Die Header-Anweisung verwendet PROCEDURE.

Sie können die 3 Parametermodi IN/OUT/IN OUT verwenden

Kann als unabhängige PL/SQL-Anweisung ausgeführt werden

Kann null oder mehr Werte über OUT/IN OUT zurückgeben

Gespeicherte Prozeduren können nicht in SQL-Anweisungen (DML oder SELECT) aufgerufen werden.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen gespeicherten Prozeduren und Funktionen in Oracle?. 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