Plsql-data-types
PL/SQL-データ型
この章では、PL/SQLのデータ型について説明します。 PL/SQL変数、定数およびパラメータには、格納形式、制約および値の有効範囲を指定する有効なデータ型が必要です。 この章では、 SCALAR および LOB データ型に焦点を当てます。 他の2つのデータ型については、他の章で説明します。
S.No | Category & Description |
---|---|
1 |
Scalar
|
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は次のようにサブタイプ CHARACTER と INTEGER を事前定義します-
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を含めて何かと同一視することはできません。