Oracleストアドプロシージャ実行SQL

WBOY
リリース: 2023-05-13 12:24:07
オリジナル
1153 人が閲覧しました

Oracle Databaseでは、ストアド・プロシージャは、特定の入力条件下で実行できる事前定義されたSQL文とプログラム・ロジックのセットです。ストアド プロシージャは、ビジネス要件に基づいて作成し、データベースに保存できます。ストアド プロシージャは、バッチ データ処理、ログ記録、自動プロセスなど、さまざまなビジネス シナリオで役立ちます。この記事では主に、Oracle ストアド プロシージャで SQL ステートメントを作成および実行する方法について説明します。

Oracle ストアド プロシージャの作成

ストアド プロシージャの作成

ストアド プロシージャを作成するには、CREATE PROCEDURE ステートメントを使用する必要があります。具体的な構文は次のとおりです:

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];
ログイン後にコピー

このうち、procedure_nameはストアドプロシージャの名前、parameter_nameは入力、出力、または入出力パラメータの名前、typeはパラメータのデータ型 local_variable_declarations はローカルです。 変数の宣言ステートメント executable_statements はストアド プロシージャの主要部分であり、Exception_handler は例外ハンドラです。 。ストアド プロシージャ内では、SQL ステートメントを使用してデータベース操作を実行できます。

次は、employee テーブルに新しいレコードを挿入する簡単なストアド プロシージャの例です。入力パラメータ、つまり

employee_id

namesalary。ストアド プロシージャの本体内で、INSERT INTO ステートメントを使用して、入力値を employee テーブルに挿入します。最後に、COMMIT ステートメントを使用して変更をコミットします。挿入操作が失敗した場合は、ROLLBACK ステートメントを使用してトランザクションの開始時の状態にロールバックし、RAISE ステートメントを使用して例外を再スローします。 ストアド プロシージャの呼び出し

ストアド プロシージャを呼び出すには、CALL ステートメントを使用できます。具体的な構文は次のとおりです:

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;
ログイン後にコピー

ストアド プロシージャを呼び出すときは、入力パラメータを渡すことができます。次に例を示します:

CALL procedure_name;
ログイン後にコピー

これは、

add_employee

ストアド プロシージャを呼び出し、値 123、'John'、および 5000 を入力パラメータ ## に渡します。 #employee_idname、および salary。実行結果は、employee テーブルに新しいレコードが挿入されます。 SQL ステートメントの実行

ストアド プロシージャ内で、SQL ステートメントを使用してさまざまな操作を実行できます。一般的な SQL ステートメントの例をいくつか示します。

SELECT ステートメント

SELECT ステートメントは、テーブルからレコードを取得するために使用されます。 SELECT ステートメントの構文は次のとおりです。

CALL add_employee(123, 'John', 5000);
ログイン後にコピー

このうち、

column1、column2、...

は取得する列名、

table_name は取得する列名です。取得するテーブル名。[WHERE条件]はオプションの検索条件です。たとえば、次の SELECT ステートメントは、employee テーブル内のすべてのレコードを取得するために使用されます。

SELECT column1, column2, ...
FROM table_name
[WHERE condition];
ログイン後にコピー
INSERT INTO ステートメント

INSERT INTO ステートメントは、新しいレコードを挿入するために使用されます。テーブルに。 INSERT INTO ステートメントの構文は次のとおりです。

SELECT *
FROM employee;
ログイン後にコピー

このうち、

table_name

は、レコードを挿入するテーブルの名前です (

column1、column2、...##)。 # は挿入するデータです 列 value1、value2、... は挿入する値です。たとえば、次の INSERT INTO ステートメントは、新しいレコードを employee テーブルに挿入します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:sql;toolbar:false;'>INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);</pre><div class="contentsignin">ログイン後にコピー</div></div>UPDATE ステートメント UPDATE ステートメントは、テーブル内のレコードを更新するために使用されます。 UPDATE ステートメントの構文は次のとおりです。

INSERT INTO employee (employee_id, name, salary)
VALUES (123, 'John', 5000);
ログイン後にコピー

このうち、

table_name

は更新するテーブルの名前です。

column1 = value1、column2 = value2、.. .

は更新するテーブルの名前、列と対応する値、WHERE 条件 はオプションの更新条件です。たとえば、次の UPDATE ステートメントは、employee テーブルのレコード namesalary 値を 6000 に更新します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:sql;toolbar:false;'>UPDATE table_name SET column1 = value1, column2 = value2, ... [WHERE condition];</pre><div class="contentsignin">ログイン後にコピー</div></div> DELETEステートメントDELETE ステートメントは、テーブルからレコードを削除するために使用されます。 DELETE ステートメントの構文は次のとおりです。

UPDATE employee
SET salary = 6000
WHERE name = 'John';
ログイン後にコピー

ここで、

table_name

はレコードを削除するテーブルの名前、

WHERE 条件

はオプションの削除条件です。たとえば、次の DELETE ステートメントは、employee テーブル内の salary 値が 5000 未満のすべてのレコードを削除するために使用されます。 #Oracle データベースでは、ストアド プロシージャは、特定の入力条件に基づいて事前定義された SQL ステートメントとプログラム ロジックを実行するための非常に便利なツールです。ストアド プロシージャの作成は複雑で困難な作業ですが、仕様に従って作成されている限り、ストアド プロシージャはデータベースの開発と管理のタスクを大幅に簡素化できます。 SQL ステートメントの実行はストアド プロシージャの中核部分であり、さまざまな SQL ステートメントに習熟し、それらをストアド プロシージャに埋め込む方法を理解する必要があります。

以上がOracleストアドプロシージャ実行SQLの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!