「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PL/SQLでの一括収集

PL/SQLでの一括収集

2024 年 11 月 8 日に公開
ブラウズ:871

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
従業員名: ジェーン・スミス
従業員名: サム・ウィルソン
従業員名: サラ・ブラウン
従業員名: マイク・ジョンソン

キーポイント

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

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

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

リリースステートメント この記事は次の場所に転載されています: https://dev.to/mrcaption49/bulk-collect-in-plsql-34hc?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3