忍者ブログ
IT関係の小作人労働の日々の日記です。 最近データベースが好きです。 インフラ構築、DB構築、アプリケーション開発・・・何でも屋です。 何でもできそうで、何にもできない。

【Oracle復習】SELECT結果を変数に代入!SELECT INTOを使いこなす


Oracle復習シリーズ、今回はSQLとPL/SQLを繋ぐ重要なステップ「SELECT INTO」です。データベースから取得した値を変数に格納する方法を確認しましょう。

1. 文法:SELECT ・・・ INTO 変数

【 基本 】 SQLで取得したデータを変数に代入するには、`SELECT`句と`FROM`句の間に `INTO` キーワードを挟みます。これにより、クエリの結果をPL/SQL内で扱えるようになります。

[ 文法のポイント ]
INTO 変数名:取得した列の値を格納する変数。型を合わせる必要があります。
SYSDATE:Oracleの擬似列。サーバーの現在日付を取得します。
DUAL:1行だけを返す便利なダミーテーブルです。

2. サンプル:現在日付を変数に格納する

【 コード 】 変数 `myDate` を宣言し、そこに `SYSDATE` の結果を代入して出力するプログラムです。

DECLARE
  myDate DATE;
BEGIN
  SELECT SYSDATE INTO myDate FROM DUAL;
  DBMS_OUTPUT.PUT_LINE(myDate);
END;
/

3. 実行結果:日付の出力

2026/04/11 07:49:18(※実行時の現在日付)

Oracle Live SQLの「DBMS output」タブに、取得した現在日付が表示されます。

4. 解説:SELECT INTO の注意点

1. 理解のコツ: `SELECT INTO` は、必ず「1行だけ」が返ってくるクエリである必要があります。0行だったり、2行以上返ってきたりするとエラーになるため注意しましょう。
2. 復習の視点: 実務では、テーブルの列定義と同じ型を自動で適用してくれる `%TYPE`(例:`myDate emp.hiredate%TYPE;`)を併用すると、型の不一致を防げてより安全なコードになります。


5. まとめ

「データベースから値を持ってきて、変数に記憶させる」。これができれば、取得した値を使って条件分岐させたり、別のテーブルにINSERTしたりと、処理の幅がぐっと広がります。Oracle Live SQLならDUAL表ですぐに試せるのが嬉しいですね!


PR

【Oracle復習】PL/SQLの変数宣言と代入!「HELLO WORLD」を変数で扱う


Oracle復習シリーズ、今回は「変数」の扱いです。PL/SQL特有の宣言方法や、代入演算子の書き方を確認し、文字列を変数に入れて出力してみましょう。

1. 文法:変数の定義と代入ルール

【 基本 】 PL/SQLでは、実行部の前にある `DECLARE` セクションで変数を宣言します。また、代入には `=` ではなく `:=` を使用するのが最大の特徴です。

[ 文法のポイント ]
DECLARE:変数の名前と型を定義する場所。
VARCHAR2(size):可変長文字列型。サイズ指定が必須です。
:= (代入演算子):右辺の値を左辺の変数に格納します。

2. サンプル:変数を使った出力

【 コード 】 `message` という変数を用意し、そこに文字列を格納してから出力するプログラムです。

DECLARE
  message VARCHAR2(20);
BEGIN
  message := 'HELLO WORLD';
  DBMS_OUTPUT.PUT_LINE(message);
END;
/

3. 実行結果:格納された値の表示

HELLO WORLD

Oracle Live SQLの「DBMS output」タブに、変数に格納された文字列が表示されます。

4. 解説:PL/SQLらしい書き方

1. 理解のコツ: 他の言語(CやJava)では `=` で代入することが多いですが、PL/SQL(Pascal由来)では `:=` を使います。比較演算子の `=` と区別するための伝統的な書き方です。
2. 復習の視点: 変数宣言時に `message VARCHAR2(20) := 'HELLO WORLD';` と書くことで、宣言と同時に初期化することも可能です。コードを短くしたい時に便利ですね。


5. まとめ

「箱(変数)を用意して、名前を付け、中身を入れる」。プログラミングの基本ですが、:= という記号に慣れることがPL/SQL習得の第一歩です。次は、この変数を使って計算や条件分岐に挑戦していきましょう!

【データベース:Oracle復習】PL/SQL Oracle Live SQLで「Hello World」を出力する


Oracle復習シリーズ、今回はプログラミングの第一歩「Hello World」です。環境構築不要の Oracle Live SQL を使って、画面に出力する基本を確認しましょう。

1. サンプル:標準出力の基本

【 コード 】 PL/SQLで文字列を出力するには、`DBMS_OUTPUT.PUT_LINE` を使用します。今回は宣言部(DECLARE)を使わない、最もシンプルな無名ブロックで実行します。

BEGIN
   DBMS_OUTPUT.PUT_LINE('hello world') ;
END ;
/

2. 実行結果:出力タブの確認

hello world

Oracle Live SQLでは、実行後に画面下部の「DBMS output」タブをクリックすることで、上記の結果を確認できます。

3. 解説:DBMS_OUTPUTパッケージ

PL/SQLには、デバッグや結果確認のために標準で用意されているパッケージがあります。それが `DBMS_OUTPUT` です。

[ 構成要素の整理 ]
DBMS_OUTPUT:Oracleが標準提供するパッケージ名。
PUT_LINE:中身を出力して改行するプロシージャ(手続き)。
' (シングルクォート):文字列を囲む際に使用。ダブルクォートではない点に注意。

1. 理解のコツ: `DBMS_OUTPUT.PUT_LINE` は、Javaの `System.out.println` や Pythonの `print` に相当します。開発中の変数の値を確認する際など、もっとも多用するツールの一つです。
2. Live SQLの視点: 通常のSQL*Plusなどでは `SET SERVEROUTPUT ON` というコマンドが必要ですが、Live SQLは自動で出力をキャッチしてくれるので、学習には最適の環境ですね。


4. まとめ

「hello world」が表示された瞬間、データベースとの対話が成立したことになります。これが全ての複雑な処理の出発点。次はこの出力機能を使って、計算結果やデータの中身を表示させていきましょう!


【データベース:Oracle復習】PL/SQLの基本ループ!LOOP ~ END LOOPを攻略する


Oracle復習シリーズ、今回は「繰り返し処理」の基本です。PL/SQLで最もシンプルなループ構造である `LOOP` ~ `END LOOP` の使い方を確認しましょう。

1. サンプル:条件判定を伴うループ

【 コード 】 変数 `var1` が 3 になったらループを抜け、それ以外の場合はその値を出力するプログラムです。終了条件を明示的に記述するのがポイントです。

DECLARE
  var1 NUMBER := 1 ;
BEGIN
  Loop

    -- var1 が 3 ならループを抜ける
    -- それ以外の場合は、var1の値を出力
    IF var1 = 3 THEN
      EXIT ;
    ELSE
      DBMS_OUTPUT.PUT_LINE(var1);
    END IF ;

    var1 := var1 + 1 ;
  END Loop ;
END ;
/

2. 実行結果:数値の出力

1
2

3に到達した時点で `EXIT` が呼ばれるため、出力されるのは「1」と「2」のみとなります。

3. 解説:ループ制御の重要性

この基本的なループ構造では、終了条件(EXIT)を書き忘れると「無限ループ」になってしまうため、注意が必要です。

[ 処理の流れの整理 ]
DECLARE:変数の宣言。今回は `var1` を 1 で初期化しています。
EXIT:ループを強制終了する命令。IF文と組み合わせて使います。
DBMS_OUTPUT.PUT_LINE:コンソールに結果を表示するための標準的な手段です。
var1 := var1 + 1:カウントアップ。これを忘れると無限ループの元です。

1. 理解のコツ: `LOOP` は「とにかく回せ」という命令。出口を `IF ... THEN EXIT` で作るのが基本の形です。シンプルですが、一番自由度が高いループでもあります。
2. 復習の視点: 今回のように `IF` 文で抜ける方法のほかに、`EXIT WHEN var1 = 3;` という、より短く書ける構文もあります。併せて覚えておくと便利ですね。


4. まとめ

「条件を満たすまで繰り返す」。これがプログラムに知能を与える第一歩です。今回の LOOP ~ END LOOP をマスターすれば、大量のデータを一件ずつ処理するカーソル処理などの応用も見えてきますね。少しずつ、確実に復習を進めましょう!



【データベース:Oracle復習】PL/SQLの最小構成!「何もしない」を攻略する


久しぶりにOracleを復習するブログ。今回はPL/SQLの基本中の基本、あえて「何もしない」プロシージャを作成して、動作を確認してみましょう。

1. サンプル:最小のプロシージャ作成

【 コード 】 実行しても何も処理を行わないプロシージャ `sample0` を作成し、実行します。PL/SQLでは、BEGINとENDの間に最低1つの文が必要なため、`NULL;` を記述します。

CREATE OR REPLACE PROCEDURE sample0
IS
BEGIN
  NULL;
END ;
/

execute sample0

2. 実行結果:処理の受理

Procedure created.

Statement processed.

上記のように表示されます。何も出力はされませんが、エラーなく「動いている」ことがわかります。

3. 解説:なぜ「NULL;」が必要なのか

PL/SQLのブロック構造において、処理部(BEGIN〜END)を空にすることは文法エラーとなります。そのため、何もしないことを明示的に宣言する必要があります。

[ ポイントの整理 ]
CREATE OR REPLACE:既存のものがあれば上書きして作成する。
NULL;:何もしない実行文。文法を満たすために使用される。
/ (スラッシュ):SQL*Plusなどのツールで、ブロックの終端を伝えて実行する記号。

1. 理解のコツ: プログラムの枠組みだけを先に作りたい時や、エラーをあえてスルーしたい時の「プレースホルダー」として `NULL;` を使うと覚えておくと便利です。
2. 動作確認の視点: 「Procedure created」はコンパイル成功を、「Statement processed」は実行成功を意味します。これが表示されれば、あなたのOracle環境のPL/SQLエンジンは健康そのものです。


4. まとめ

「何もしない」ことから始まるPL/SQLの道。これが全てのプログラムの最小単位です。ここから変数や制御構文を付け足していくことで、複雑な業務ロジックを組み上げていくことになります。まずはこのシンプルすぎる1歩を大切にしましょう!