忍者ブログ
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