Heim  >  Artikel  >  Datenbank  >  Ausführung einer gespeicherten Oracle-Prozedur in SQL

Ausführung einer gespeicherten Oracle-Prozedur in SQL

WBOY
WBOYOriginal
2023-05-13 12:24:071217Durchsuche

In der Oracle-Datenbank ist eine gespeicherte Prozedur ein vordefinierter Satz von SQL-Anweisungen und Programmlogik, der basierend auf bestimmten Eingabebedingungen ausgeführt werden kann. Gespeicherte Prozeduren können basierend auf Geschäftsanforderungen geschrieben und dann in der Datenbank gespeichert werden. Gespeicherte Prozeduren sind in einer Vielzahl von Geschäftsszenarien nützlich, z. B. bei der Stapeldatenverarbeitung, Protokollierung, automatisierten Prozessen usw. In diesem Artikel wird hauptsächlich erläutert, wie SQL-Anweisungen in gespeicherten Oracle-Prozeduren geschrieben und ausgeführt werden.

Gespeicherte Oracle-Prozeduren schreiben

Gespeicherte Prozeduren erstellen

Um gespeicherte Prozeduren zu erstellen, müssen Sie die CREATE PROCEDURE-Anweisung verwenden. Die spezifische Syntax lautet wie folgt:

CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] type [, ...])]
IS
[local_variable_declarations;]
BEGIN
    executable_statements
    [EXCEPTION
        exception_handler
        [exception_handler, ...]]
END [procedure_name];

Wobei procedure_name der Name ist der gespeicherten Prozedur, parameter_name ist der Name des Eingabe-, Ausgabe- oder Eingabe-Ausgabe-Parameters, type ist der Datentyp des Parameters, local_variable_declarations ist die Deklarationsanweisung lokaler Variablen, executable_statements ist der Hauptteil der gespeicherten Prozedur und Exception_handler ist der Ausnahmehandler. Innerhalb einer gespeicherten Prozedur können Sie SQL-Anweisungen verwenden, um Datenbankoperationen auszuführen. procedure_name 是存储过程的名称,parameter_name 是输入、输出或输入输出参数的名称,type 是参数的数据类型,local_variable_declarations 是局部变量的声明语句,executable_statements 是存储过程的主体部分,exception_handler 是异常处理程序。在存储过程内部,可以使用 SQL 语句执行数据库操作。

示例

下面是一个简单的存储过程的示例,用于在 employee 表中插入新记录:

CREATE OR REPLACE PROCEDURE add_employee (employee_id IN NUMBER, name IN VARCHAR2, salary IN NUMBER)
IS
BEGIN
    INSERT INTO employee (employee_id, name, salary)
    VALUES (employee_id, name, salary);
    COMMIT;
EXCEPTION
    WHEN OTHERS THEN
        ROLLBACK;
        RAISE;
END add_employee;

这个存储过程有 3 个输入参数,分别是 employee_idnamesalary。在存储过程主体内,使用 INSERT INTO 语句将输入值插入到 employee 表中。最后,使用 COMMIT 语句提交更改。如果插入操作失败,则使用 ROLLBACK 语句回滚到事务开始时的状态,并使用 RAISE 语句重新抛出异常。

调用存储过程

要调用存储过程,可以使用 CALL 语句,具体语法如下:

CALL procedure_name;

在调用存储过程时,可以传递输入参数,以下是一个例子:

CALL add_employee(123, 'John', 5000);

这将调用 add_employee 存储过程,将值 123、'John' 和 5000 传递给输入参数 employee_idnamesalary。执行结果将是将新记录插入到 employee 表中。

执行 SQL 语句

在存储过程内部,可以使用 SQL 语句执行各种操作。下面是一些常见的 SQL 语句示例:

SELECT 语句

SELECT 语句用于从表中检索记录。以下是 SELECT 语句的语法:

SELECT column1, column2, ...
FROM table_name
[WHERE condition];

其中,column1, column2, ... 是要检索的列名,table_name 是要检索的表名,[WHERE condition] 是可选择的检索条件。例如,以下 SELECT 语句用于检索 employee 表中的所有记录:

SELECT *
FROM employee;

INSERT INTO 语句

INSERT INTO 语句用于将新记录插入到表中。以下是 INSERT INTO 语句的语法:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

其中,table_name 是要插入记录的表的名称,column1, column2, ... 是要插入数据的列,value1, value2, ... 是要插入的值。例如,以下 INSERT INTO 语句用于将新记录插入到 employee 表中。

INSERT INTO employee (employee_id, name, salary)
VALUES (123, 'John', 5000);

UPDATE 语句

UPDATE 语句用于更新表中的记录。以下是 UPDATE 语句的语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
[WHERE condition];

其中,table_name 是要更新的表名,column1 = value1, column2 = value2, ... 是要更新的列和对应的值,WHERE condition 是可选的更新条件。例如,以下 UPDATE 语句用于将 employee 表中 name 为 'John' 的记录的 salary 值更新为 6000:

UPDATE employee
SET salary = 6000
WHERE name = 'John';

DELETE 语句

DELETE 语句用于删除表中的记录。以下是 DELETE 语句的语法:

DELETE FROM table_name
[WHERE condition];

其中,table_name 是要删除记录的表的名称,WHERE condition 是可选的删除条件。例如,以下 DELETE 语句用于删除 employee 表中 salary

Beispiel

Das Folgende ist ein Beispiel für eine einfache gespeicherte Prozedur zum Einfügen neuer Datensätze in die Tabelle employee:

DELETE FROM employee
WHERE salary < 5000;

Diese gespeicherte Prozedur verfügt über 3 Eingabeparameter, nämlich employee_id Code>, <code>Name, Gehalt. Verwenden Sie im Hauptteil der gespeicherten Prozedur die INSERT INTO-Anweisung, um die Eingabewerte in die Tabelle employee einzufügen. Verwenden Sie abschließend die COMMIT-Anweisung, um die Änderungen zu übernehmen. Wenn der Einfügevorgang fehlschlägt, verwenden Sie die ROLLBACK-Anweisung, um zum Zustand am Anfang der Transaktion zurückzukehren, und verwenden Sie die RAISE-Anweisung, um die Ausnahme erneut auszulösen. 🎜🎜Eine gespeicherte Prozedur aufrufen🎜🎜Um eine gespeicherte Prozedur aufzurufen, können Sie die CALL-Anweisung verwenden. Die spezifische Syntax lautet wie folgt: 🎜rrreee🎜Beim Aufrufen einer gespeicherten Prozedur können Sie Eingabeparameter übergeben: 🎜rrreee 🎜Dadurch wird die gespeicherte Prozedur add_employee aufgerufen und die Werte 123, „John“ und 5000 an die Eingabeparameter employee_id, name und Gehalt. Das Ergebnis ist ein neuer Datensatz, der in die Tabelle employee eingefügt wird. 🎜🎜SQL-Anweisungen ausführen🎜🎜Innerhalb einer gespeicherten Prozedur können Sie SQL-Anweisungen verwenden, um verschiedene Vorgänge auszuführen. Hier sind einige gängige Beispiele für SQL-Anweisungen: 🎜🎜SELECT-Anweisung 🎜🎜Die SELECT-Anweisung wird verwendet, um Datensätze aus einer Tabelle abzurufen. Das Folgende ist die Syntax der SELECT-Anweisung: 🎜rrreee🎜 Unter diesen ist column1, Column2, ... der abzurufende Spaltenname und table_name der Tabellenname abgerufen werden soll, ist [WHERE-Bedingung] eine optionale Suchbedingung. Beispielsweise wird die folgende SELECT-Anweisung verwendet, um alle Datensätze in der Tabelle employee abzurufen: 🎜rrreee🎜INSERT INTO-Anweisung🎜🎜INSERT INTO-Anweisung wird verwendet, um neue Datensätze in die Tabelle einzufügen. Das Folgende ist die Syntax der INSERT INTO-Anweisung: 🎜rrreee🎜wobei table_name der Name der Tabelle ist, in die Datensätze eingefügt werden sollen, und column1, columns2, ... ist die Spalte, in die Daten eingefügt werden sollen, <code>value1, value2, ... sind die einzufügenden Werte. Die folgende INSERT INTO-Anweisung fügt beispielsweise neue Datensätze in die Tabelle employee ein. 🎜rrreee🎜UPDATE-Anweisung🎜🎜UPDATE-Anweisung wird zum Aktualisieren von Datensätzen in einer Tabelle verwendet. Das Folgende ist die Syntax der UPDATE-Anweisung: 🎜rrreee🎜wobei table_name der Name der zu aktualisierenden Tabelle ist, column1 = value1, columns2 = value2, ... ist die zu aktualisierende Spalte und der entsprechende Wert, WHERE-Bedingung ist eine optionale Aktualisierungsbedingung. Beispielsweise aktualisiert die folgende UPDATE-Anweisung den salary-Wert des Datensatzes in der Tabelle employee, dessen name „John“ ist, auf 6000: 🎜rrreee 🎜DELETE-Anweisung 🎜🎜DELETE-Anweisung wird zum Löschen von Datensätzen aus der Tabelle verwendet. Das Folgende ist die Syntax der DELETE-Anweisung: 🎜rrreee🎜wobei table_name der Name der Tabelle ist, in der Datensätze gelöscht werden sollen, und WHERE-Bedingung die optionale Löschbedingung ist. Beispielsweise wird die folgende DELETE-Anweisung verwendet, um alle Datensätze in der Tabelle employee mit einem salary-Wert von weniger als 5000 zu löschen: 🎜rrreee🎜Fazit🎜🎜In der Oracle-Datenbank gespeichert Prozeduren sind ein sehr nützliches Werkzeug zum Ausführen vordefinierter SQL-Anweisungen und Programmlogik basierend auf bestimmten Eingabebedingungen. Das Schreiben gespeicherter Prozeduren ist eine komplexe und herausfordernde Aufgabe. Solange sie jedoch gemäß den Spezifikationen geschrieben werden, können gespeicherte Prozeduren die Aufgaben der Datenbankentwicklung und -verwaltung erheblich vereinfachen. Das Ausführen von SQL-Anweisungen ist der Kernbestandteil gespeicherter Prozeduren. Sie erfordert Kenntnisse in verschiedenen SQL-Anweisungen und das Verständnis, wie diese in gespeicherte Prozeduren eingebettet werden. 🎜

Das obige ist der detaillierte Inhalt vonAusführung einer gespeicherten Oracle-Prozedur in SQL. 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