ホームページ  >  記事  >  データベース  >  パラメータを使用した Oracle ストアド プロシージャ

パラメータを使用した Oracle ストアド プロシージャ

WBOY
WBOYオリジナル
2023-05-07 20:25:352898ブラウズ

Oracle は一般的なリレーショナル データベース管理システムです。Oracle ストアド プロシージャを使用すると、データベース操作が最適化され、データベースのパフォーマンスが向上します。この記事では、パラメータを使用してストアド プロシージャを定義する方法、パラメータを使用してストアド プロシージャを呼び出す方法など、Oracle ストアド プロシージャについて紹介します。

1. ストアド プロシージャの概要:

ストアド プロシージャは、プログラム コードがデータベースに保存されるプリコンパイルされたデータベース プログラムであり、一度作成すると再利用できます。 SQL ステートメントとは異なり、ストアド プロシージャは実行が速く、再利用可能で、一定のセキュリティとメンテナンスが可能です。

ストアド プロシージャは、Oracle データベースで次の目的を達成できます:

  1. ネットワーク送信データを削減し、データ処理効率を向上します;
  2. 次のような複雑なビジネス ロジックを実装できます。トランザクション制御など;
  3. データの保守が容易になり、維持管理が容易になります。

2. パラメーターを使用してストアド プロシージャを定義する

Oracle ストアド プロシージャを定義するときは、パラメーターを受け取ることができます。パラメーターには、入力パラメーター、出力パラメーター、または入出力パラメーターを使用できます。 。

  1. 入力パラメータ: ストアド プロシージャ内で、ストアド プロシージャにデータを渡すために使用されます。
  2. 出力パラメータ: ストアド プロシージャ内で値が割り当てられ、呼び出し元に返されます。
  3. 入力パラメータと出力パラメータ: データを渡し、同時に戻り値を取得するために使用されます。

パラメータを使用してストアド プロシージャを定義する一般的な形式は次のとおりです。

CREATE [OR REPLACE] PROCEDURE プロシージャ名
(parameter1 [IN | OUT | IN OUT] type1 [, パラメータ 2 [IN | OUT | IN OUT] type2 ...])
IS | AS
[ローカル宣言]
BEGIN
実行可能ステートメント
[EXCEPTION
例外ハンドラ]
END [プロシージャ名];

このうち、CREATE PROCEDURE ステートメントはストアド プロシージャの定義に使用されます。プロシージャ名はストアド プロシージャの名前、IN、OUT、IN OUT はパラメータ転送メソッドです。 type はパラメータのデータ型、IS/ AS の後はローカル変数の宣言、BEGIN と END の間はストアド プロシージャの実行可能ステートメント、EXCEPTION は例外処理ステートメントです。

単純なストアド プロシージャを例に挙げます。

CREATE PROCEDURE get_employee_salary
(
emp_id IN NUMBER,
給与 OUT NUMBER
)
IS
BEGIN
SELECT給与 INTO給与 FROM従業員 WHERE従業員_id = emp_id;
END;

このストアド プロシージャには、入力パラメータ emp_id と出力パラメータ給与の 2 つのパラメータがあります。これは、employees テーブルの emp_id に基づいて対応する給与値をクエリし、それを出力パラメータ給与に割り当てます。

3. パラメーターを使用してストアド プロシージャを呼び出す

ストアド プロシージャを呼び出すときは、ストアド プロシージャの名前とパラメーター リストを指定する必要があります。パラメーター リストの順序は、ストアド プロシージャを定義するときにパラメーターがリストされる順序と同じである必要があります。たとえば、上記の get_employee_salary ストアド プロシージャを呼び出すには、次の SQL ステートメントを使用できます。

DECLARE
n_employee_id NUMBER := 100;
n_salary NUMBER;
BEGIN
get_employee_salary( n_employee_id, n_salary) ;
DBMS_OUTPUT.PUT_LINE('ID ' || n_employee_id || ' の従業員の給与は ' || n_salary);
END;

このステートメントは変数 n_employee_id を定義します、値は 100 です。別の変数 n_salary には初期値が割り当てられていません。 get_employee_salary ストアド プロシージャを使用して、n_employee_id に対応する給与値をクエリし、その結果を n_salary 変数に割り当て、最後に結果を出力します。

上記はOracleストアドプロシージャのパラメータ定義と呼び出し方法です。ストアド プロシージャを使用すると、データベース操作の効率と柔軟性が大幅に向上します。ただし、ストアド プロシージャを設計するときは、ストアド プロシージャの効率と保守性、および必要なビジネス ロジックを完了するためにストアド プロシージャを使用する必要があるかどうかを考慮する必要があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。