検索
ホームページデータベースOracleOracle でストアド プロシージャを作成および実行する方法の例

Oracle は、多くの高度な機能を備えた非常に強力なデータベース管理システムであり、ストアド プロシージャもその 1 つです。ストアド プロシージャは、後で呼び出して使用できるようにデータベースに保存できる、データベース操作用の事前定義された SQL ステートメントのセットです。

Oracle では、ストアド プロシージャは、SQL とプログラミングを組み合わせた言語である PL/SQL で記述されます。 PL/SQL は強力なデータ操作機能とプロセス制御機能を備えており、効率的なストアド プロシージャを簡単に作成できます。

ストアド プロシージャの利点

ストアド プロシージャの主な利点は、データベースの実行効率を高め、ネットワーク通信のオーバーヘッドを削減できることです。ストアド プロシージャは事前にコンパイルおよび最適化されているため、実行中に繰り返し解析および最適化する必要がなく、実行のために直接呼び出すことができます。さらに、ストアド プロシージャはパラメータを通じて動的操作を実装することもできるため、コードが簡素化されるだけでなく、SQL インジェクションなどのリスクも回避されます。

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

次に、Oracle でストアド プロシージャを作成および実行する方法について説明します。

ストアド プロシージャを作成する

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

CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] parameter_type [, ...])]
[IS | AS]
BEGIN
      pl/sql_code_block;
END [procedure_name];

その中には:

  • CREATE PROCEDURE: ストアド プロシージャを作成するステートメント。
  • OR REPLACE: オプションのパラメーター。このパラメーターを指定すると、作成されたストアド プロシージャが既に存在する場合は置き換えられることを意味します。
  • procedure_name: ストアド プロシージャの名前。
  • parameter_name: ストアド プロシージャの入力と出力を指定するために使用されるオプションの入力パラメータまたは出力パラメータ。
  • parameter_type: パラメーターのタイプ。VARCHAR2、NUMBER などのデータ型、または SYS_REFCURSOR などのカーソル タイプを指定できます。
  • IS | AS: ストアド プロシージャの言語タイプを指定するために使用されるオプションのパラメータ。IS は開始 (PL/SQL ブロック) を表し、AS は終了 (PL/SQL ブロック) を表します。
  • pl/sql_code_block: PL/SQL コード ブロック。ストアド プロシージャの特定のロジック実装が含まれます。

次のコード例は、2 つのパラメーターを受け入れ、その合計を出力する単純なストアド プロシージャを作成する方法を示しています。

CREATE OR REPLACE PROCEDURE add_nums(
    num1 IN NUMBER,
    num2 IN NUMBER,
    sum OUT NUMBER
)
IS
BEGIN
    sum := num1 + num2;
END add_nums;

ストアド プロシージャを実行します。

In In Oracle 、ストアド プロシージャを実行するには、EXECUTE または EXECUTE IMMEDIATE ステートメントが必要です。たとえば、上記のサンプル プログラムを実行するには、次のステートメントを使用できます。

DECLARE
    result NUMBER;
BEGIN
    add_nums(10, 20, result);
    DBMS_OUTPUT.PUT_LINE('The sum is: ' || result);
END;

ここでは、DECLARE ステートメントを使用して、使用する必要がある変数結果を宣言し、add_nums ストアド プロシージャを呼び出して出力します。結果を画面に表示します。

パラメータ タイプ

ストアド プロシージャでは、パラメータは入力パラメータ、出力パラメータ、または双方向パラメータです。

  • 入力パラメータ: ストアド プロシージャの入力を指定します。
  • 出力パラメーター: ストアド プロシージャの出力を指定します。
  • 双方向パラメータ: 入力または出力可能。

パラメータの型を宣言する方法は次のとおりです:

(param_name [IN | OUT | IN OUT] param_type [, ...])

この宣言では、[IN | OUT | IN OUT] はオプションのパラメータであり、パラメータの型を指定するために使用されます。パラメータ。パラメータのタイプが指定されていない場合は、デフォルトで IN タイプ、つまり入力パラメータが使用されます。

サンプル コード:

CREATE OR REPLACE PROCEDURE my_proc (
    num IN NUMBER,
    str IN OUT VARCHAR2,
    cur OUT SYS_REFCURSOR
)
IS
BEGIN
    -- 逻辑实现
END my_proc;

上記のコードでは、3 つのパラメーターを含むストアド プロシージャ my_proc を宣言します。最初のパラメーター num は入力パラメーターで、2 番目のパラメーター str は双方向です。パラメーター、 3 番目のパラメーター cur は出力パラメーターです。

レコード セットの処理

ストアド プロシージャを使用してデータを操作する場合、多くの場合、クエリ結果のリストを返す必要があります。 Oracle は、カーソルと PL/SQL テーブルの 2 種類のレコードセットを提供します。

カーソル

カーソルは、クエリ結果を横断できる結果セットを返すデータ構造です。カーソルは明示的または暗黙的です。明示的カーソルでは、コード内でカーソル変数を宣言し、開いたり閉じたりする必要があります。暗黙的カーソルは、Oracle によって自動的に作成および管理されます。

これは、カーソルの使用方法を示すストアド プロシージャです:

CREATE OR REPLACE PROCEDURE get_employee(
    id_list IN VARCHAR2,
    emp_cur OUT SYS_REFCURSOR
)
IS
BEGIN
    OPEN emp_cur FOR 'SELECT * FROM employees WHERE id IN (' || id_list || ')';
END get_employee;

この例では、従業員のカンマ区切りリストを受け入れる 2 つのパラメータを指定してストアド プロシージャ get_employee を宣言します。 ID リストが入力パラメータとして使用され、選択された従業員情報を含むカーソル emp_cur が返されます。

PL/SQL テーブル

PL/SQL テーブルは、一連の値を格納できる配列のようなデータ構造です。 PL/SQL 表には、一連のデータをストアド・プロシージャに渡すなど、ストアド・プロシージャ内で多くの実用的な用途があります。

Oracle では、次のコードのように、ストアド プロシージャで PL/SQL テーブルを宣言して使用できます。

CREATE OR REPLACE PACKAGE my_package
IS
    TYPE num_list IS TABLE OF NUMBER INDEX BY PLS_INTEGER;

    PROCEDURE sum_nums(nums IN num_list, sum OUT NUMBER);
END my_package;

CREATE OR REPLACE PACKAGE BODY my_package
IS
    PROCEDURE sum_nums(nums IN num_list, sum OUT NUMBER)
    IS
        total NUMBER := 0;
    BEGIN
        FOR indx IN 1 .. nums.COUNT LOOP
            total := total + nums(indx);
        END LOOP;
        sum := total;
    END sum_nums;
END my_package;

ここでは、PL/SQL を宣言する my_package という名前のパッケージを作成します。 num_list という名前のテーブル型と、その型を使用するストアド プロシージャ sum_nums です。 sum_nums は、num_list 型の引数を受け取り、それらの合計を計算します。

結論

Oracle では、ストアド プロシージャはデータベースを保守するための重要なツールの 1 つであり、効率的な実行機能とダイナミクスを備えています。また、ストアド プロシージャを使用すると、単一の SQL ステートメントを実行するだけでなく、いくつかのビジネス ロジックを実行できるため、再利用性と保守性が向上します。データベースに保存して共有し、複数のアプリケーションやプロセスからアクセスできるためです。ストアド プロシージャを使用することには多くのメリットがあり、短い記事ですべてを説明することは困難ですが、深く理解し、適用することができれば、実際の業務で大きなメリットが得られると考えています。

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PL/SQLのカーソルを使用して、複数のデータを処理するにはどうすればよいですか?PL/SQLのカーソルを使用して、複数のデータを処理するにはどうすればよいですか?Mar 13, 2025 pm 01:16 PM

この記事では、列ごとのデータ処理用のPL/SQLカーソルについて説明します。 それは、暗黙、明示、およびREFカーソルを比較して、カーソル宣言、開閉、フェッチ、および閉鎖を詳述しています。 効率的な大規模なデータセットの取り扱いとループの使用の手法

Oracleデータベースで一般的に使用されるセグメントは何ですかOracleデータベースで一般的に使用されるセグメントは何ですかMar 04, 2025 pm 06:08 PM

この記事では、Oracleデータベースセグメントの種類(データ、インデックス、ロールバック、一時的)、パフォーマンスへの影響、および管理について説明します。 ワークロードと最適な効率のためにデータの特性に基づいて適切なセグメントタイプを選択することを強調しています

Oracleデータベースのパフォーマンステストツールは何ですかOracleデータベースのパフォーマンステストツールは何ですかMar 04, 2025 pm 06:11 PM

この記事では、Oracleデータベースのパフォーマンステストツールについて説明します。 予算、複雑さ、監視、診断、ワークロードシミュレーション、レポートなどの機能に基づいて適切なツールを選択することについて説明します。 この記事では、効果的なBOも詳しく説明しています

Oracleデータベースをダウンロードする方法Oracleデータベースをダウンロードする方法Mar 04, 2025 pm 06:07 PM

この記事は、Oracleデータベースのダウンロードを通じてユーザーをガイドします。 エディションの選択(Express、Standard、Enterprise)、プラットフォームの互換性、およびライセンス契約の受け入れを強調し、プロセスの詳細を説明します。 システム要件とエディションスーザビル

Oracleデータベースはどのようなデフォルトのテーブルスペースを提供していますか?Oracleデータベースはどのようなデフォルトのテーブルスペースを提供していますか?Mar 04, 2025 pm 06:10 PM

この記事では、Oracleのデフォルトのテーブルスペース(システム、Sysaux、ユーザー)、その特性、識別方法、およびパフォーマンスへの影響を調べます。 デフォルトに依存することに反対し、個別の大さじを作成することの重要性を強調します

Oracleでユーザーと役割を作成するにはどうすればよいですか?Oracleでユーザーと役割を作成するにはどうすればよいですか?Mar 17, 2025 pm 06:41 PM

この記事では、SQLコマンドを使用してOracleでユーザーと役割を作成する方法について説明し、役割の使用を含むユーザー許可を管理するためのベストプラクティス、最小特権の原則、定期的な監査について説明します。

Oracleデータベースインストールクライアントツールとは何ですか?Oracleデータベースインストールクライアントツールとは何ですか?Mar 04, 2025 pm 06:09 PM

この記事では、完全なサーバーインストールなしでOracleデータベースと対話するために不可欠なOracleデータベースクライアントツールについて説明します。 SQL*Plus、SQL Developer、Enterprise Manager、RMANなどの一般的に使用されるツールの詳細は、彼らの楽しみを強調しています

敏感なデータを保護するために、Oracleデータのマスキングとサブセットを使用するにはどうすればよいですか?敏感なデータを保護するために、Oracleデータのマスキングとサブセットを使用するにはどうすればよいですか?Mar 13, 2025 pm 01:19 PM

この記事では、敏感なデータを保護するためのソリューションであるOracle Data Masking and Subsetting(DMS)を詳しく説明しています。 機密データの特定、マスキングルールの定義(シャッフル、代替、ランダム化)、ジョブの設定、監視、および展開をカバーします

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。