PL/SQLの変数と定数

実践オラクルデータベース構築・運用

オラクルデータベース構築オラクルデータベース運用SQL書式PL/SQL書式Oracle Master試験

TOP PL/SQL書式 PL/SQL文法

PL/SQLの変数と定数


スポンサードリンク
スポンサードリンク


PL/SQLの変数と定数



PL/SQLブロック内でデータを保存するための、『変数』と『定数』について説明します。
※定義方法や使用上の注意点について、使用例を用いて解説しているので、参考にしてください。


1.変数

変数は、手続き型処理で途中で結果を一時保存しておくために使用します。

◆PL/SQL変数の定義方法

【書式】
<変数名> <データ型> [ NOT NULL ] [ { := | DEFAULT } <値> ];

※1 <変数名>:変数の名前(予約後以外を指定)
※2 <データ型>:格納する値のデータ型(NUMBER型、CHAR型、VARCHAR2型、DATE型、BOOLEAN型)
※3 [ NOT NULL ]でNULLが代入されないように定義
※4  { := | DEFAULT } で初期値を設定
※5 PL/SQLで使用するデータ型には、スカラー型コンポジット型がありSQLデータ型と類似していますが、意味や値の範囲が若干異なります。しかしその差分に関しては、OracleがSQLデータ型を暗黙的にPL/SQLのデータ型に変換してくれるため、私たちはデータ型の違いを意識する必要はありません。



以下にPL/SQL変数の使用例を示します。

SQL> SET ECHO ON
SQL> SET SERVEROUTPUT ON
SQL> @variable_sample
SQL> DECLARE
2 num NUMBER(3);
3 name VARCHAR2(7) DEFAULT 'HOMER';
4 BEGIN
5 num := 1;
6 DBMS_OUTPUT.PUT_LINE(num);
7 DBMS_OUTPUT.PUT_LINE(name);
8 END;
9 /
1
HOMER

PL/SQLプロシージャが正常に完了しました。

SQL>



◆%TYPE、%ROWTYPE属性

%TYPE%ROWTYPE属性は、データ型を直接指定するのではなく、Oracleの列データ側や既に定義されている変数のデータ型を参照します。Oracleデータを直接扱う場合、対応する変数を%TYPE、%ROWTYPE属性で定義すると便利です。

以下に%TYPE、%ROWTYPE属性の利点を解説します。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
 ・列の定義が変更されても、ソース・コードの修正が必要ない
 ・列の正確な定義が分からなくても変数を定義できる

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜


以下に%TYPE属性の使用例を示します。

SQL> SET ECHO ON
SQL> SET SERVEROUTPUT ON
SQL> @type_sample
SQL> DECLARE
2 tname dba_users.username%TYPE;
3 BEGIN
4 SELECT username INTO tname FROM dba_users WHERE USERNAME='SYS';
5 DBMS_OUTPUT.PUT_LINE(tname);
6 END;
7 /
SYS

PL/SQLプロシージャが正常に完了しました。

SQL>




2.定数


定数は変数と似ており、「データを保存しておく場所」です。異なるのは定数という名前の通り、いったん定数に格納された値は上書きできず、プログラムの終了まで定まった値を保持するという点です。定数を用いるケースとしては、プログラム内で常に同じ値を使い続けたい場合に適しています。

◆PL/SQL定数の定義方法

【書式】
<定数名> CONSTANT <データ型> [ NOT NULL ] [ { := | DEFAULT } <値> ];


以下にPL/SQL定数の使用例を示します。

SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 cnum CONSTANT NUMBER(8) := 5;
3 BEGIN
4 DBMS_OUTPUT.PUT_LINE(cnum);
5 END;
6 /
5

PL/SQLプロシージャが正常に完了しました。

SQL>




PL/SQL基礎文法
 ● PL/SQLのコメント

 ● PL/SQLの変数と定数

 ● PL/SQLのIF文

 ● PL/SQLのCASE文

 ● PL/SQLのLOOP文

 ● PL/SQLのGOTO文

 ● PL/SQLのNULL文

 ● PL/SQLのSELECT INTO文

 ● PL/SQLのカーソル(CURSOR)

 ● PL/SQLの例外処理


スポンサードリンク

リンク集 / 免責事項サイトマップ問い合わせ
Copyright (C) 2012  実践オラクルデータベース構築・運用  All rights reserved