連載
» 2017年05月17日 05時00分 公開

超入門「PL/SQL」(2):宣言部と変数の定義(その1) (2/3)

[小笠原宏幸,株式会社アシスト]

変数に代入されている値を表示する

 PL/SQLを使用したアプリケーション開発を行う際、意図した処理が行われているかどうかを確認する(=デバッグする)ために、変数に代入されている値を表示したい場合があります。このような時に利用できるのが「DBMS_OUTPUT.PUT_LINE」です。この機能を使うと、指定した対象を「SQL*Plus」(SQLを実行するためのユーティリティーツール)の画面に表示できます。なお、事前にSQL*Plusの環境変数「SERVEROUTPUT」を「ON」にしておいてください。この設定はログアウトするまで有効となります。

 書式は以下の通りです。

DBMS_OUTPUT.PUT_LINE(<対象>) ;
書式
set serveroutput on
 
DECLARE
  v_no   NUMBER(8) := 1;        /* 変数v_noをNUMBER型で定義し、初期値1を代入 */
BEGIN                     
  DBMS_OUTPUT.PUT_LINE(v_no);   /* 現在変数v_noに代入されている値を表示 */
  v_no := 2;                    /* 変数v_noに値2を代入 */
  DBMS_OUTPUT.PUT_LINE(v_no);   /* 現在変数v_noに代入されている値を表示 */
END;
/
1
2

 この例では、実行部の各地点で変数「v_no」に代入されている値を、「DBMS_OUTPUT.PUT_LINE」によって画面上に表示しています。

 DBMS_OUTPUT.PUT_LINEはPL/SQLブロックのデバッグなどでよく使用します。この段階でしっかり習得しておいてください。

変数名の命名規則

 宣言部では、変数をはじめ、PL/SQLブロック内で使うオブジェクトに名前を定義します。名前は以下の規則内で設定します。

  • 名前の長さは最大30バイト
  • 1文字目は英字のみ、2文字目以降は数字や記号も使用できる(※ただし、「-」(ハイフン)、「/」(スラッシュ)、「&」(アンパサンド)、空白などは使用できない)
  • Oracleの予約語(SELECTなど、既に使用されているキーワードのこと)は指定できない
  • 大文字と小文字は区別されない

名前の有効範囲

 宣言部で定義した変数などを、PL/SQLブロック内の各地点で参照したい場合があります。名前を参照できる範囲は、「宣言されたブロック内(ネストされたサブブロックを含む)」となります(図2)。

photo 図2 名前の有効範囲(正常な場合の例)

 図2の例では、変数「v_no」が「ブロック1」で宣言されています。このため、ブロック1と、そのサブブロックであるブロック2で参照できます。

 一方、エラーが発生してしまう例は以下の通りです(図3)。

photo 図3 名前の有効範囲(エラーが発生する場合の例)

 図3では、「ブロック2」で宣言されている変数「v_no」を、その外側のブロック1で参照しようとしています。この場合は、名前の有効範囲を超えているためにエラーが発生します。

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

8月8日10時30分〜16時30分の間、システムメンテナンスのため記事の一部表示や資料のダウンロードができなくなります。ご理解のほどよろしくお願いいたします。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。