Heim  >  Artikel  >  Datenbank  >  Was ist die gespeicherte Prozedur der Oracle-Datenbank?

Was ist die gespeicherte Prozedur der Oracle-Datenbank?

青灯夜游
青灯夜游Original
2020-08-22 15:19:545012Durchsuche

Gespeicherte Prozedur der Oracle-Datenbank: eine Reihe von SQL-Anweisungen zum Ausführen bestimmter Funktionen, die kompiliert und in der Datenbank gespeichert werden. 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.

Was ist die gespeicherte Prozedur der Oracle-Datenbank?

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 ein Prozess, der durch Flusskontrolle und SQL-Anweisungen geschrieben wird. Dieser Prozess wird kompiliert und optimiert und auf dem Datenbankserver gespeichert. Er muss nur aufgerufen werden, wenn die Anwendung ihn 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 Zukunft ausgeführt werden. Im Allgemeinen werden SQL-Anweisungen bei jeder Ausführung einmal neu kompiliert Gespeicherte Prozeduren können 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.

Um es einfach auszudrücken: Sie schreiben eine gespeicherte Prozedur auf Ihrem Computer, genau wie die Daten in diesen Tabellen, aber sie ist ausführbarer Code und kann mit der Datenbank verbunden werden kann die von Ihnen geschriebene gespeicherte Prozedur aufrufen

Ihre Funktion besteht darin, die Details zu verbergen. Das heißt, der von Ihnen geschriebene gespeicherte Prozedurcode kann kompliziert sein, aber für andere ist es sehr einfach, ihn aufzurufen, ohne genau zu wissen, wie er funktioniert. , und kann mehrere Anweisungen gleichzeitig ausführen

Grundlegende Syntax

CREATE [OR REPLACE] PROCEDURE 存储过程名[(参数[IN|OUT|IN OUT] 数据类型...)] 
{AS|IS} 
[说明部分] 
BEGIN 
可执行部分 
[EXCEPTION 
错误处理部分] 
END [过程名];

1 Das optionale Schlüsselwort OR REPLACE bedeutet, dass, wenn die gespeicherte Prozedur bereits existiert, sie mit einer neuen gespeicherten Prozedur überschrieben wird, normalerweise der Rekonstruktion von die vom Benutzer gespeicherte Prozedur.

2. Der Parameterteil wird zum Definieren mehrerer Parameter verwendet (wenn keine Parameter vorhanden sind, können sie weggelassen werden). Parameter gibt es in drei Formen: IN, OUT und IN OUT. Wenn die Parameterform nicht angegeben ist, wird standardmäßig IN verwendet.

3. Das Schlüsselwort AS kann auch als IS geschrieben werden, gefolgt vom Beschreibungsteil des Prozesses, in dem Sie die lokalen Variablen des Prozesses definieren können.

4. Sie können einen beliebigen Texteditor oder direkt in der SQLPLus-Umgebung verwenden, um gespeicherte Prozeduren zu schreiben. Der Originalcode und der kompilierte Code werden während des Kompilierungsprozesses kompiliert . In der Datenbank speichern. Die erfolgreich kompilierte gespeicherte Prozedur kann in der ORacle-Umgebung aufgerufen werden.

5. Eine gespeicherte Prozedur kann gelöscht werden, wenn sie nicht mehr benötigt wird. Die Person, die eine gespeicherte Prozedur löscht, ist der Ersteller der Prozedur oder jemand mit der Systemberechtigung DROP ANY PROCEDURE. Die Syntax zum Löschen einer gespeicherten Prozedur lautet wie folgt:

DROP PROCEDURE 存储过程名;

6. Wenn Sie eine gespeicherte Prozedur neu kompilieren möchten, können Sie nur der Ersteller der Prozedur oder jemand mit der Systemberechtigung ALTER ANY PROCEDURE sein. Die Syntax lautet wie folgt:

ALTER PROCEDURE 存储过程名 COMPILE;

7. Die Person, die die gespeicherte Prozedur ausführt (oder aufruft), ist der Ersteller des Prozesses oder die Person, die über die Systemberechtigung EXECUTE ANY PROCEDURE verfügt, oder die Person, der die EXECUTE-Berechtigung erteilt wurde der Besitzer. Die Ausführungsmethode ist wie folgt:

Methode 1:

EXECUTE 模式名.存储过程名[(参数...)];

Methode 2:

BEGIN 
模式名.存储过程名[(参数...)]; 
END;

8. Die übergebenen Parameter müssen mit dem definierten Parametertyp, der Anzahl und der Reihenfolge übereinstimmen (wenn die Parameter einen Standardwert definieren, können die Parameter dies tun). beim Aufruf weggelassen werden). Parameter können Variablen, Konstanten oder Ausdrücke sein.

9. Der Unterschied zwischen as und is: Beide können in gespeicherten Prozeduren (Prozeduren) und Funktionen (Funktionen) verwendet werden, aber mit IS kann der Debug-Modus nicht nur zum Debuggen der gespeicherten Funktion verwendet werden AS kann nicht als IS verwendet werden. Im Cursor (CURSOR) können Sie nur IS, nicht jedoch AS verwenden.

10. Dekodierfunktion in Oracle

Erklärung der Bedeutung:

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

Die Bedeutung dieser Funktion ist wie folgt:

IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF
decode(字段或字段的运算,值1,值2,值3)

Das Ergebnis dieser Funktion ist, dass der Wert des Feldes oder der Feldoperation gleich dem Wert ist 1, die Funktion gibt den Wert 2 zurück, andernfalls gibt sie den Wert 3 zurück.

Natürlich können Wert 1, Wert 2 und Wert 3 auch Ausdrücke sein. Diese Funktion vereinfacht bestimmte SQL-Anweisungen erheblich Basierend auf einem bestimmten Wert, der 0 ist, positiv oder negativ, wird jeweils 0, 1 und -1 zurückgegeben. 1, und das Dekodierungsergebnis ist „Variable 1“, wodurch der Zweck erreicht wird, einen kleineren Wert anzunehmen.

11. NVL-Funktion

Das Format der NVL-Funktion ist wie folgt:

Die Bedeutung ist: Wenn der erste Parameter von Oracle leer ist, wird der Wert des zweiten Parameters angezeigt Der erste Parameter ist nicht leer, dann wird der ursprüngliche Wert des ersten Parameters angezeigt.

NVL2函数的格式如下:NVL2(expr1,expr2, expr3)

含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。

NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。

格式如下:

Coalesce(expr1, expr2, expr3….. exprn)

表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。

返回表达式中第一个非空表达式,如有以下语句:   

SELECT COALESCE(NULL,NULL,3,4,5) FROM dual

其返回结果为:3

如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值

12、max函数

对字符型数据的最大值,是按照首字母由A~Z的顺序排列,越往后,其值越大。当然,对于汉字则是按照其全拼拼音排列的,若首字符相同,则比较下一个字符,以此类推。

13、随机抽取N条记录

https://blog.csdn.net/bbliutao/article/details/7727322

14、untion all

union all,解释为联合所有。

Union解释为联合。union或者Union all实现把前后两个select集合的数据联合起来,组成一个结果集查询输出。这就要求联合前后的结果集,需要分别有相同的输出字段的数目,并且对应的字段类型要相同。
SELECT column1, column2 from table1 union (all) select column1, column2 from table2

以上语句要求量表的column1字段类型相同,column2类型相同。而且每个查询的数目都是一样的。UNION ALL和UNION的差别就在ALL上面,第一个叫联合所有,说明会显示前后两个查询所有的数据,而UNION没有ALL(所有)这个单词,实现将前后两个查询的数据联合到一起后,去掉重复的数据显示

推荐教程:《Oracle教程

Das obige ist der detaillierte Inhalt vonWas ist die gespeicherte Prozedur der Oracle-Datenbank?. 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