ホームページ  >  記事  >  データベース  >  Oracle ストアド プロシージャでパラメータを使用して呼び出しを行う方法

Oracle ストアド プロシージャでパラメータを使用して呼び出しを行う方法

PHPz
PHPzオリジナル
2023-04-25 09:01:241948ブラウズ

Oracle ストアド プロシージャは、データベースに保存され、いつでも実行して呼び出すことができる、コンパイル済みの再利用可能な SQL ステートメントです。 Oracle ストアド プロシージャでは、パラメータを使用してより柔軟な呼び出しを実現できます。この記事では、Oracle ストアド プロシージャでパラメータを使用する方法について説明します。

ストアド プロシージャの作成とパラメータの定義

Oracle データベースでは、ストアド プロシージャを作成するには、CREATE PROCEDURE ステートメントを使用する必要があります。簡単な例を次に示します。

CREATE OR REPLACE PROCEDURE get_employee_details(
    employee_id IN NUMBER,
    employee_name OUT VARCHAR2,
    hire_date OUT DATE,
    salary OUT NUMBER
)
AS
BEGIN
    SELECT e.employee_name, e.hire_date, e.salary 
    INTO employee_name, hire_date, salary
    FROM employees e
    WHERE e.employee_id = employee_id;
END;

上記のコードは、4 つのパラメータを持つ get_employee_details という名前のストアド プロシージャを作成します: employee_id(IN 入力パラメータの型)、employee_namehire_date、および salary (OUT タイプの出力パラメーター)。ストアド プロシージャの機能は、employee_id パラメータに基づいて従業員の詳細情報をクエリし、クエリ結果を出力パラメータに格納することです。

ストアド プロシージャの呼び出し

ストアド プロシージャが正常に作成されたら、EXECUTE ステートメントを使用してそれを呼び出すことができます。ストアド プロシージャを呼び出すコードは次のとおりです。

DECLARE
    emp_name VARCHAR2(50);
    emp_hire_date DATE;
    emp_salary NUMBER;
BEGIN
    get_employee_details(101, emp_name, emp_hire_date, emp_salary);
    DBMS_OUTPUT.PUT_LINE('Employee Name : ' || emp_name);
    DBMS_OUTPUT.PUT_LINE('Hire Date : ' || emp_hire_date);
    DBMS_OUTPUT.PUT_LINE('Salary : ' || emp_salary);
END;

上記のコードでは、まず 3 つの変数 emp_nameemp_hire_date、および emp_salary を宣言します。 , 次に、ストアド プロシージャ get_employee_details を呼び出してパラメータ 101 を渡し、上で宣言した変数に出力パラメータを割り当てます。最後に、DBMS_OUTPUT パッケージの PUT_LINE 関数を使用して、クエリ結果を出力します。

DECLARE ステートメントと BEGIN ステートメントはコード ブロックの始まりと終わりを表すため、これらのステートメントが必要であることに注意してください。コード ブロックでは、変数の宣言、ストアド プロシージャの呼び出し、さまざまな SQL ステートメントの実行などができます。

パラメータの種類

ストアド プロシージャのパラメータを定義する場合、次のタイプを使用できます。

  • IN: 入力パラメータを示します。 、これらのパラメータはストアド プロシージャに値を渡すために使用されます。
  • OUT: ストアド プロシージャから値を返すために使用される出力パラメーターを示します。
  • IN OUT: 入力パラメータと出力パラメータの両方であることを示します。これらのパラメーターは、ストアド プロシージャに値を渡したり、ストアド プロシージャから値を返したりすることができます。

上記のタイプに加えて、NOCOPY キーワードを使用してパラメータを定義することもできます。これにより、パラメータ転送中のメモリのコピーが回避され、実行効率が向上します。

アプリケーション シナリオ

実際の開発では、ストアド プロシージャのパラメーター呼び出しは非常に一般的であり、複数のシナリオに適用できます。典型的なアプリケーション シナリオの一部を次に示します。

  • パラメータ化されたクエリ: ストアド プロシージャでは、入力パラメータを定義して、ストアド プロシージャが異なる入力パラメータに基づいて異なるクエリ ステートメントを実行できるようにすることで、パラメータ化を実現できます。問い合わせてください。
  • バッチ操作: ストアド プロセスでは入力パラメーターと出力パラメーターを定義できるため、ストアド プロセスは入力パラメーターに基づいてバッチ操作を実行し、同時に処理結果を出力に保存できます。パラメーターを使用して、後続の操作の数を減らします。
  • トランザクション処理: ストアド プロシージャでは、入力パラメータを使用してトランザクションの送信またはロールバックを制御できるため、より柔軟なトランザクション処理方法が実現します。

概要

この記事では、Oracle ストアド プロシージャでパラメータ呼び出しを使用する方法を紹介します。通常、ストアド プロシージャへのパラメータ化された呼び出しにより、コードの再利用性と柔軟性が大幅に向上し、より柔軟な機能をアプリケーションに提供できます。したがって、実際の開発では、ストアド プロシージャのパラメータ化された呼び出しを最大限に活用して、システムのパフォーマンスと保守性を向上させる必要があります。

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

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