PL/SQLのデータ型


変数の宣言

変数の名前 [CONSTANT] データ型 [NOT NULL] [:= 初期値];
初期値
初期値を指定しない場合は、変数にNULLが代入されます。
CONSTANT
CONSTANTを指定した場合は、変数の値を変更することが出来ません。初期値を代入する必要があります。
NOT NULL
NOT NULLを指定した場合は、変数にNULLを代入することは出来ません。初期値を代入する必要があります。

PL/SQLのデータ型

スカラー型
数値ファミリー 数値ファミリーの型には、整数値または実数値を格納します。
NUMBER(p, s) pは整数部の桁数、sは小数点未満の桁数です。最大38桁までの固定小数点数、浮動小数点数を扱うことが出来ます。
BINARY_INTEGER データベースには格納せず、計算にだけ使用するような場合に使用します。
   
文字ファミリー 文字ファミリーの型には、文字列を格納します。
VARCHAR2(l) 可変長の文字列。32,767バイトまで格納することが出来ます。
CHAR(l) 固定長の文字列。32,767バイトまで格納することが出来ます。
   
rawファミリー rawファミリーの型には、バイナリ-データを格納します。
RAW(l) 固定長のバイナリ-データ。最大長は 32,767バイト
LONG RAW 最大長は 32,767バイト
   
日付ファミリー
DATE 日付と時刻の情報を格納します。
   
ブールファミリー
BOOLEAN TRUE、FALSEまたはNULLを格納します。
複合型
TABLE PL/SQL表とも言います。C言語の配列に似ています。
RECORD 関連性のあるいくつかの変数を一つにまとめて作る、ユーザー定義型です。C言語の構造体に似ています。
参照型
REF CURSOR 他の記憶領域を示すデータ型です。
LOB型
LOB グラフィックスや長いテキストドキュメントなどの大量のデータを保持するデータベースフィールドです。
BFILE Oracleデータベースの外部に格納されたラージバイナリファイルに読み込み専用アクセスが可能になります。
BLOB 非構造型バイナリデータを格納できます。
CLOB 1バイト文字データを格納できます。
NLOB 固定幅マルチバイト各国文字キャラクタセットデータを格納できます。

%TYPEと%ROWTYPE

 PL/SQLの変数の多くは多くの場合データベースの表に格納されているデータを操作する際に使用します。変数は表の列と同じである必要があります。もちろん、「NUMBER」や「VARCHAR2」を使用しても構いませんが、その場合表定義が変更されるたびに、PL/SQLの変数宣言も変更する必要があります。
 %TYPEや%ROWTYPEを使用することで、表定義と同じ型を持つことが出来、表定義が変更された場合でも、PL/SQLの変数宣言を変更する必要はありません。

[%TYPEの例]
変数名 表名.列名%TYPE;

[%ROWTYPEの例]
変数名 表名%ROWTYPE;

データ型間の変換

明示的なデータ型変換

関数 説明 変換に使用できるファミリー
TO_CHAR オプションのフォーマットに従い、引数をVARCHAR2型に変換します。 数値、日付
TO_DATE オプションのフォーマットに従い、引数をDATE型に変換します。 文字
TO_NUMBER オプションのフォーマットに従い、引数をNUMBER型に変換します。 文字
RAWTOHEX RAW型値を16進数表現のバイナリ値に変換します。 raw
HEXTORAW 16進数表現をバイナリ値に変換します。 文字(16進表現)
CHARTOROWID RAWIDの文字表現を内部のバイナリフォーマットに変換します。 文字(18文字のrowidフォーマット)
ROWIDTOCHAR 内部のバイナリフォーマットのROWID型変数を18文字の外部フォーマットに変換します。 rowid

暗黙的なデータ型変換

 PL/SQLでは、可能な場合、データ型ファミリー間の変換が自動的に実行されます。


変数の有効範囲


Index Back Next