Oracle でストアド プロシージャを呼び出す方法

PHPz
リリース: 2023-04-18 09:23:55
オリジナル
2012 人が閲覧しました

Oracle は、複雑なビジネス ロジックを実装するストアド プロシージャの使用をサポートする、非常に人気のあるリレーショナル データベース管理システムです。ストアド プロシージャは、データベースに保存されたプリコンパイル済みのコードであり、一連の操作を実行するために呼び出すことができるため、コードの複雑さが簡素化され、効率が向上します。この記事では、Oracle でストアド プロシージャを呼び出す方法について説明します。

  1. ストアド プロシージャを定義する

まず、データベースにストアド プロシージャを定義する必要があります。ストアド プロシージャは、PL/SQL または SQL 言語を使用して作成できます。 PL/SQL におけるストアド プロシージャの基本構文は次のとおりです。

CREATE [OR REPLACE] PROCEDURE procedure_name
    [ (parameter_name [IN | OUT | IN OUT] type [, ...]) ]
IS
    [declaration_section]
BEGIN
    executable_section
[EXCEPTION
    exception_section]
END [procedure_name];
ログイン後にコピー

このうち、procedure_name はストアド プロシージャの名前、parameter_name はストアド プロシージャのパラメータ名、type はストアド プロシージャのデータ型です。パラメータ、declaration_section は宣言部分、executable_section は実行可能部分、Exception_section は例外処理部分です。

たとえば、次の単純なストアド プロシージャは、employees テーブル内の従業員 ID に基づいて従業員の個人情報をクエリするために使用されます。

CREATE OR REPLACE PROCEDURE get_employee_info
    (employee_id IN NUMBER, 
    name OUT VARCHAR2,
    email OUT VARCHAR2)
IS
BEGIN
    SELECT first_name || ' ' || last_name, email INTO name, email
    FROM employees
    WHERE employee_id = get_employee_info.employee_id;
END;
ログイン後にコピー

このストアド プロシージャでは、3 つのストアド プロシージャを定義します。パラメータ:employee_id は入力パラメータ、name と email は出力パラメータです。実行可能部分では、SELECT ステートメントを使用して従業員テーブルから従業員の名前と電子メールを取得し、それらを出力パラメーターに保存します。

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

ストアド プロシージャを定義したら、他のプログラムでそれを呼び出すことができます。ストアド・プロシージャを呼び出すには、SQL Developer、PL/SQL Developer、コマンドライン・インタフェースの使用など、いくつかの方法があります。

SQL Developerでは、次の構文を使用してストアド・プロシージャを呼び出すことができます:

DECLARE
    variable_name1 datatype;
    variable_name2 datatype;
BEGIN
    procedure_name(parameter_value1, parameter_value2, ..., parameter_valueN);
    variable_name1 := parameter_valueX;
    variable_name2 := parameter_valueY;
END;
ログイン後にコピー

その中で、variable_nameは出力パラメータ値を格納するために使用される変数で、datatypeはデータ型です。およびparameter_valueは入力パラメータ、value、parameter_valueX、およびparameter_valueYは出力パラメータに保存される値です。

たとえば、次のコマンドを使用して、上記の get_employee_info ストアド プロシージャを呼び出すことができます:

DECLARE
    name VARCHAR2(30);
    email VARCHAR2(50);
BEGIN
    get_employee_info(100, name, email);
    DBMS_OUTPUT.PUT_LINE('Name: ' || name);
    DBMS_OUTPUT.PUT_LINE('Email: ' || email);
END;
ログイン後にコピー

この例では、実行可能部分で DBMS_OUTPUT.PUT_LINE ステートメントを使用して、次の値を出力します。出力パラメータ。

さらに、PL/SQL Developerでは、次の構文を使用してストアド プロシージャを呼び出すことができます。

VARIABLE variable_name1 datatype;
VARIABLE variable_name2 datatype;
EXECUTE procedure_name(parameter_value1, parameter_value2, ..., parameter_valueN);
PRINT variable_name1;
PRINT variable_name2;
ログイン後にコピー

コマンドライン インタフェースでは、次のSQL文を使用してストアド プロシージャを呼び出すことができます。 :

BEGIN
    procedure_name(parameter_value1, parameter_value2, ..., parameter_valueN);
END;
ログイン後にコピー
  1. ストアド プロシージャの利点

ストアド プロシージャを使用する主な利点の 1 つは、コードの複雑さを軽減できることです。ストアド プロシージャは、複雑なロジックを 1 つのユニットにカプセル化して、コードの作成とメンテナンスを簡素化できます。さらに、ストアド プロシージャはプリコンパイルされているため、複数の実行にわたってより高速に実行できるため、パフォーマンスが向上します。

さらに、ストアド プロシージャは、ある程度のセキュリティも提供します。ストアド プロシージャはクライアントではなくデータベース サーバー上で実行できます。つまり、ストアド プロシージャのコードはネットワーク経由でクライアントに送信されず、機密情報が漏洩することはありません。

つまり、ストアド プロシージャは、データベース アプリケーションのパフォーマンスとセキュリティをある程度向上させることができる、Oracle の非常に便利な機能です。上記のメソッドを通じてストアド プロシージャを呼び出し、それを将来のタスクで使用して複雑な操作を実行できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート