PL/SQLでの一括収集

Mary-Kate Olsen
リリース: 2024-09-29 06:21:02
オリジナル
843 人が閲覧しました

BULK COLLECT in PL/SQL

確かに!以下は、PL/SQL での BULK COLLECT の使用法を示す簡単な例です。

一括収集とは何ですか?

BULK COLLECT は、1 回の操作で SQL クエリから複数の行を PL/SQL コレクションにフェッチするために使用されるメソッドです。これにより、SQL エンジンと PL/SQL エンジン間のコンテキストの切り替えが減り、特に大規模なデータセットの場合、プロセスがより効率的になります。

一括収集の簡単な例

この例では、テーブルを作成し、そこにデータを挿入し、BULK COLLECT を使用してデータをコレクションにフェッチします。

ステップ 1: サンプルテーブルを作成する

まず、employees というサンプル テーブルを作成します。

CREATE TABLE 従業員 (
従業員 ID NUMBER、
従業員名 VARCHAR2(50)
);

INSERT INTO 従業員 (従業員 ID, 従業員名) VALUES (1, 'John Doe');
INSERT INTO 従業員 (従業員 ID, 従業員名) VALUES (2, 'ジェーン スミス');
INSERT INTO 従業員 (従業員 ID, 従業員名) VALUES (3, 'サム ウィルソン');
INSERT INTO 従業員 (従業員 ID, 従業員名) VALUES (4, 'サラ ブラウン');
INSERT INTO 従業員 (従業員 ID, 従業員名) VALUES (5, 'マイク ジョンソン');

コミット;

ステップ 2: 一括収集を使用した PL/SQL ブロック

ここで、BULK COLLECT を使用して、すべての従業員名をコレクションに取得します。

宣言
TYPE emp_name_table は VARCHAR2(50) のテーブルです。 -- コレクション型を定義します
emp_names emp_name_table; -- その型の変数を宣言します
始めてください
-- 従業員名をコレクションに一括収集します
従業員名を選択して従業員名に一括収集
従業員から;

-- Print the names
FOR i IN 1..emp_names.COUNT LOOP
    DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp_names(i));
END LOOP;
ログイン後にコピー

終了;
/

説明

  1. コレクション タイプの定義: 従業員名を保持するために、emp_name_table というコレクション タイプを定義します。

  2. BULK COLLECT INTO: SELECT ステートメントは、employees テーブルからすべてのemployee_name 値をフェッチし、一度に emp_names コレクションに収集します。

  3. 結果を表示するループ: COUNT を使用してコレクションをループし、エントリの総数を取得し、各従業員名を出力します。

出力

上記の PL/SQL ブロックを実行すると、次のような出力が表示されます。

従業員名: John Doe
従業員名: Jane Smith
従業員名: サム・ウィルソン
従業員名: Sara Brown
従業員名: マイク・ジョンソン

重要なポイント

効率: BULK COLLECT を使用すると、SQL と PL/SQL 間のコンテキスト切り替えの数が減り、大規模なデータセットの処理がより効率的になります。

大規模なデータの処理: 個々の行処理のオーバーヘッドを最小限に抑えることができるため、大規模なデータセットを扱う場合に特に便利です。

この例は、複数の行を PL/SQL コレクションに効率的に収集するための BULK COLLECT の基本的な使用法を示しています。

以上がPL/SQLでの一括収集の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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