Skip to content

Instantly share code, notes, and snippets.

@yukikim
Created March 19, 2025 07:58
Show Gist options
  • Save yukikim/3a223d467f1321f26f9b1316e9402d1b to your computer and use it in GitHub Desktop.
Save yukikim/3a223d467f1321f26f9b1316e9402d1b to your computer and use it in GitHub Desktop.
カーソルでインサート

PL/SQLでカーソルを使用してテーブルにデータを挿入する方法は、次のように行うことができます。以下は、カーソルを使って他のテーブルからデータを取得し、あるテーブルに挿入する例です。

例: カーソルを使ったデータ挿入

  1. テーブルの作成: まず、データを挿入するテーブルとデータを取得するテーブルを作成します。
CREATE TABLE source_table (
    id NUMBER,
    name VARCHAR2(50)
);

CREATE TABLE target_table (
    id NUMBER,
    name VARCHAR2(50)
);
  1. サンプルデータの挿入: source_tableにサンプルデータを挿入します。
INSERT INTO source_table (id, name) VALUES (1, 'Alice');
INSERT INTO source_table (id, name) VALUES (2, 'Bob');
INSERT INTO source_table (id, name) VALUES (3, 'Charlie');

COMMIT;
  1. PL/SQLブロックの作成: カーソルを使用してsource_tableからデータを取得し、target_tableに挿入するPL/SQLブロックを作成します。
DECLARE
    CURSOR source_cursor IS
        SELECT id, name FROM source_table;  -- データを取得するカーソル

BEGIN
    FOR record IN source_cursor LOOP
        INSERT INTO target_table (id, name)  -- target_table にデータを挿入
        VALUES (record.id, record.name);
    END LOOP;

    COMMIT;  -- トランザクションをコミット
END;
/

説明

  • DECLARE: 変数やカーソルを定義するセクションです。
  • CURSOR: source_cursorというカーソルを定義し、source_tableからidnameを取得します。
  • FOR LOOP: カーソルをループして、各レコードを取得します。
  • INSERT INTO: ループ内で、取得したデータをtarget_tableに挿入します。
  • COMMIT: データベーストランザクションをコミットします。

この方法で、カーソルを使用してテーブルにデータを挿入することができます。必要に応じて、条件を追加したり、エラーハンドリングを行ったりすることも可能です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment