Plsql-data-types

提供:Dev Guides
移動先:案内検索

PL/SQL-データ型

この章では、PL/SQLのデータ型について説明します。 PL/SQL変数、定数およびパラメータには、格納形式、制約および値の有効範囲を指定する有効なデータ型が必要です。 この章では、 SCALAR および LOB データ型に焦点を当てます。 他の2つのデータ型については、他の章で説明します。

S.No Category & Description
1

Scalar

  • NUMBER、DATE、、 *BOOLEAN など、内部コンポーネントのない単一の値。
2

Large Object (LOB)

テキスト、グラフィックイメージ、ビデオクリップ、サウンド波形など、他のデータ項目とは別に保存される大きなオブジェクトへのポインター。

3

Composite

個別にアクセスできる内部コンポーネントを持つデータ項目。 たとえば、コレクションとレコード。

4

Reference

他のデータ項目へのポインター。

PL/SQLスカラーのデータ型とサブタイプ

PL/SQLスカラーデータ型とサブタイプは、次のカテゴリに分類されます-

S.No Date Type & Description
1

Numeric

算術演算が実行される数値。

2

Character

単一の文字または文字列を表す英数字の値。

3

Boolean

論理演算が実行される論理値。

4

Datetime

日付と時刻。

PL/SQLは、データ型のサブタイプを提供します。 たとえば、NUMBERデータ型にはINTEGERというサブタイプがあります。 PL/SQLプログラムのサブタイプを使用して、データ型を他のプログラムのデータ型と互換性を持たせ、PL/SQLコードをJavaプログラムなどの別のプログラムに埋め込むことができます。

PL/SQL数値データ型とサブタイプ

次の表は、PL/SQLの事前定義された数値データ型とそのサブタイプを示しています-

S.No Data Type & Description
1

PLS_INTEGER

32ビットで表される-2,147,483,648から2,147,483,647の範囲の符号付き整数

2

BINARY_INTEGER

32ビットで表される-2,147,483,648から2,147,483,647の範囲の符号付き整数

3

BINARY_FLOAT

単精度IEEE 754形式の浮動小数点数

4

BINARY_DOUBLE

倍精度IEEE 754形式の浮動小数点数

5

NUMBER(prec, scale)

絶対値が1E-130から1.0E126の範囲(ただし、含まない)である固定小数点または浮動小数点数。 NUMBER変数は0を表すこともできます

6

DEC(prec, scale)

38桁の10進数の最大精度を持つANSI固有の固定小数点型

7

DECIMAL(prec, scale)

38桁の10進数の最大精度を持つIBM固有の固定小数点型

8

NUMERIC(pre, secale)

最大精度が10進数38桁の浮動小数点型

9

DOUBLE PRECISION

126桁の最大精度(10進数で約38桁)のANSI固有の浮動小数点型

10

FLOAT

126桁の2進数(約38桁の10進数)の精度を持つANSIおよびIBM固有の浮動小数点型

11

INT

38桁の10進数の最大精度を持つANSI固有の整数型

12

INTEGER

38桁の10進数の最大精度を持つANSIおよびIBM固有の整数型

13

SMALLINT

38桁の10進数の最大精度を持つANSIおよびIBM固有の整数型

14

REAL

最大精度63桁の2進数(10進数で約18桁)の浮動小数点型

以下は有効な宣言です-

DECLARE
   num1 INTEGER;
   num2 REAL;
   num3 DOUBLE PRECISION;
BEGIN
   null;
END;
/

上記のコードをコンパイルして実行すると、次の結果が生成されます-

PL/SQL procedure successfully completed

PL/SQLの文字データ型とサブタイプ

以下は、PL/SQLの事前定義された文字データ型とそのサブタイプの詳細です-

S.No Data Type & Description
1

CHAR

最大サイズが32,767バイトの固定長文字列

2

VARCHAR2

最大サイズが32,767バイトの可変長文字列

3

RAW

PL/SQLで解釈されない最大サイズが32,767バイトの可変長バイナリまたはバイト文字列

4

NCHAR

最大サイズ32,767バイトの固定長国別文字ストリング

5

NVARCHAR2

最大サイズが32,767バイトの可変長国別文字列

6

LONG

最大サイズが32,760バイトの可変長文字列

7

LONG RAW

PL/SQLで解釈されない最大サイズが32,760バイトの可変長バイナリまたはバイト文字列

8

ROWID

物理行識別子、通常のテーブルの行のアドレス

9

UROWID

ユニバーサル行識別子(物理、論理、または外部行識別子)

PL/SQLブールデータ型

*BOOLEAN* データ型には、論理演算で使用される論理値が格納されます。 論理値は、ブール値 *TRUE* および *FALSE* および値 *NULL* です。

ただし、SQLにはBOOLEANに相当するデータ型はありません。 したがって、ブール値を使用することはできません-

  • SQL文
  • 組み込みSQL関数( TO_CHAR など)
  • SQLステートメントから呼び出されるPL/SQL関数

PL/SQLの日時および間隔タイプ

*DATE* データ型は、午前0時からの秒単位の時刻を含む固定長の日付時刻を格納するために使用されます。 有効な日付の範囲は、紀元前4712年1月1日から西暦9999年12月31日までです。

デフォルトの日付形式は、Oracle初期化パラメータNLS_DATE_FORMATによって設定されます。 たとえば、デフォルトは「DD-MON-YY」で、月の日を表す2桁の数字、月の名前の略語、年の下2桁が含まれます。 たとえば、01-OCT-12。

各日付には、世紀、年、月、日、時、分、秒が含まれます。 次の表は、各フィールドの有効な値を示しています-

Field Name Valid Datetime Values Valid Interval Values
YEAR -4712 to 9999 (excluding year 0) Any nonzero integer
MONTH 01 to 12 0 to 11
DAY 01 to 31 (limited by the values of MONTH and YEAR, according to the rules of the calendar for the locale) Any nonzero integer
HOUR 00 to 23 0 to 23
MINUTE 00 to 59 0 to 59
SECOND 00 to 59.9(n), where 9(n) is the precision of time fractional seconds 0 to 59.9(n), where 9(n) is the precision of interval fractional seconds
TIMEZONE_HOUR -12 to 14 (range accommodates daylight savings time changes) Not applicable
TIMEZONE_MINUTE 00 to 59 Not applicable
TIMEZONE_REGION Found in the dynamic performance view V$TIMEZONE_NAMES Not applicable
TIMEZONE_ABBR Found in the dynamic performance view V$TIMEZONE_NAMES Not applicable

PL/SQLラージオブジェクト(LOB)データ型

ラージオブジェクト(LOB)データ型は、テキスト、グラフィックイメージ、ビデオクリップ、音声波形などの大きなデータ項目を指します。 LOBデータ型を使用すると、このデータに効率的かつランダムに区分的にアクセスできます。 以下は、事前定義されたPL/SQL LOBデータ型です-

Data Type Description Size
BFILE Used to store large binary objects in operating system files outside the database. System-dependent. Cannot exceed 4 gigabytes (GB).
BLOB Used to store large binary objects in the database. 8 to 128 terabytes (TB)
CLOB Used to store large blocks of character data in the database. 8 to 128 TB
NCLOB Used to store large blocks of NCHAR data in the database. 8 to 128 TB

PL/SQLユーザー定義サブタイプ

サブタイプは別のデータ型のサブセットであり、そのベース型と呼ばれます。 サブタイプには基本タイプと同じ有効な操作がありますが、有効な値のサブセットのみです。

PL/SQLは、パッケージ STANDARD のいくつかのサブタイプを事前定義します。 たとえば、PL/SQLは次のようにサブタイプ CHARACTERINTEGER を事前定義します-

SUBTYPE CHARACTER IS CHAR;
SUBTYPE INTEGER IS NUMBER(38,0);

独自のサブタイプを定義して使用できます。 次のプログラムは、ユーザー定義のサブタイプの定義と使用を示しています-

DECLARE
   SUBTYPE name IS char(20);
   SUBTYPE message IS varchar2(100);
   salutation name;
   greetings message;
BEGIN
   salutation := 'Reader ';
   greetings := 'Welcome to the World of PL/SQL';
   dbms_output.put_line('Hello ' || salutation || greetings);
END;
/

上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-

Hello Reader Welcome to the World of PL/SQL

PL/SQL procedure successfully completed.

PL/SQLのNULL

PL/SQL NULL値は*欠落*または*不明データ*を表し、整数、文字、またはその他の特定のデータ型ではありません。 NULL は、空のデータ文字列またはNULL文字値 '\ 0' と同じではないことに注意してください。 nullを割り当てることはできますが、nullを含めて何かと同一視することはできません。