📝 PL/SQLでデータベースを自在に操ろう! データ処理の基本
PL/SQLを使って、データベースからデータを取り出したり、新しくデータを追加したりする方法を学びます。まるで、PL/SQLという道具を使って、データベースという宝箱を開け閉めするようなものです。
1. データベースからデータを取り出す方法 🎣
SQLでデータを取得するにはSELECT文を使いますが、PL/SQLでは、そのデータを「変数」という箱に入れる必要があります。
1.1. SELECT INTO文
データを変数に入れるためには、SELECT文にINTOを追加します。
【構文】SELECT カラム名 INTO 変数名 FROM テーブル名 WHERE 条件;
【大切なポイント】 変数に入れるデータのデータ型は、取得元のカラムのデータ型と同じでなければなりません。例えば、文字列のカラムを数値の変数に入れようとするとエラーになります。
例:CUSTOMERテーブルからデータを取得する
DECLARE
c_name VARCHAR2(50);
c_address VARCHAR2(50);
c_id NUMBER := 10;
BEGIN
-- CUSTOMERテーブルからデータを取得して変数に格納
SELECT first_name, country
INTO c_name, c_address
FROM customer
WHERE customer_id = c_id;
-- 変数の中身を表示
DBMS_OUTPUT.PUT_LINE('名前は' || c_name || 'です。');
DBMS_OUTPUT.PUT_LINE('国は' || c_address || 'です。');
END;
/
このプログラムを実行すると、customer_idが10の顧客のfirst_nameとcountryがそれぞれc_nameとc_addressという変数に格納され、画面に表示されます。
2. データ型は「%TYPE」を使うのがベスト! 👍
前の例では、変数をVARCHAR2(50)やNUMBERと直接宣言しました。しかし、もっと良い方法があります。それが「%TYPE」です。
テーブル名.カラム名%TYPE
%TYPEを使うと、取得元のカラムのデータ型と長さを自動的に引き継いでくれます。
【なぜ%TYPEが良いのか?】
もし、将来データベースのテーブルのカラムの長さやデータ型が変わっても、PL/SQLのコードを直す必要がなくなります。これを「アプリケーションの独立性」と呼びます。
今後は、変数を宣言するときは%TYPEを使うように心がけましょう。
3. PL/SQLでテーブルにデータを追加する 💾
次に、PL/SQLを使ってテーブルに新しいデータを追加する方法を学びます。
3.1. INSERT文
データベースにデータを挿入するには、おなじみのINSERT文を使います。
【構文】INSERT INTO テーブル名 (カラム1, カラム2, ...)VALUES (値1, 値2, ...);
PL/SQLでは、VALUESに入れる値を「変数」にすることで、動的にデータを追加できます。
【手順】
DECLAREブロックで、挿入したいデータの数だけ変数を宣言します。💡ここでも
%TYPEを使いましょう!
BEGINブロックで、INSERT文を書きます。VALUESには、先ほど宣言した変数を指定します。INSERT文を実行したら、必ずCOMMIT文を実行して、データベースへの変更を確定させます。
例:CUSTOMERテーブルに新しい顧客を追加する
DECLARE
c_id CUSTOMER.CUSTOMER_ID%TYPE := 13;
c_fname CUSTOMER.FIRST_NAME%TYPE := 'ジェフ';
c_lname CUSTOMER.LAST_NAME%TYPE := 'ベゾス';
-- 他にも必要な変数を宣言...
BEGIN
-- CUSTOMERテーブルにデータを挿入
INSERT INTO CUSTOMER (CUSTOMER_ID, FIRST_NAME, LAST_NAME, ...)
VALUES (c_id, c_fname, c_lname, ...);
-- 変更を確定させる
COMMIT;
-- 挿入が成功したことを表示
DBMS_OUTPUT.PUT_LINE('データは正常に挿入されました。');
END;
/
このプログラムを実行すると、CUSTOMERテーブルにIDが13の新しいレコードが追加されます。c_idやc_fnameの値を変更して何度も実行すれば、簡単に複数のデータを挿入できます。
これが、PL/SQLを使った基本的なデータ処理方法です。
