B Oracle REST Data Servicesデータベース・タイプのマッピング

この付録では、構造化されたデータベース・タイプとともに、REST Data Servicesデータベース・タイプのマッピングを説明します。

B.1 Oracle組込み型

データ型 JSONデータ型 RESTバージョン 値の例 説明

NUMBER

数値

v1

"big" : 1234567890

"bigger" : 1.2345678901e10

すべての有効数字で表されます。数が10桁を超える場合、ベキ指数が使用されます。

RAW

文字列

カスタム

"code" : "SEVMTE8gV09STEQh"

Base64ビット・エンコーディングが使用されます

DATE

文字列

v1.2

"start" : "1995-06-02T04:29:11Z"

UTCタイムゾーンではISO 8601形式を使用して表されます

TIMESTAMP

文字列

v1.2

when : "1995-06-02T04:29:11.002Z"

UTCタイムゾーンではISO 8601形式を使用して表されます

TIMESTAMPWITHLOCALTIMEZONE

文字列

v1.2

"at" : "1995-06-02T04:29:11.002Z"

ISO 8601の形式を使用して表されます。ローカル・タイムゾーン仕様は転送エンコーディングには適用されないため、ローカル・タイムゾーンがUTCタイムゾーンに変換されます。

CHAR

文字列

v1

"message" : "Hello World! "

後続するスペースで表されます。これは、PUTまたはPOSTメソッド用の充填物として必要とされる場合があります。たとえば、"abc "です。 

ROWID

文字列

カスタム

"id" : "AAAGq9AAEAAAA0bAAA"

ネイティブのOracleテキスト表現としての出力。たとえば、次の変換と同等: SELECT ROWIDTOCHAR(id) id FROM DUAL

UROWID

文字列

カスタム

"uid" : "AAAGq9AAEAAAA0bAAA"

ネイティブのOracleテキスト表現としての出力。たとえば、次の変換と同等: SELECT CAST(uid as VARCHAR(4000)) id FROM DUAL

FLOAT

数値

v1

*as NUMBER

 

NCHAR

文字列

v1

"message" : "Hello World! "

文字がボディ・キャラクタ・セットによってサポートされない場合にユニコード文字を使用して表されます。

NVARCHAR2

文字列

v1

"message" : "Hello World!"

文字がボディ・キャラクタ・セットによってサポートされない場合にユニコード文字を使用して表されます。

VARCHAR2

文字列

v1

"message" : "Hello World!"

 

BINARY_FLOAT

数値

v1

*as NUMBER

 

BINARY_DOUBLE

数値

v1

*as NUMBER

 

TIMESTAMPWITHTIMEZONE

オブジェクト

v1.2

"event" : "1995-06-02T04:29:11.002Z"
"when" : "1995-06-02T04:29:11.002Z"

UTCタイムゾーンではISO 8601形式を使用して表されます値は同じ時点を表しますが、元のタイムゾーンは失われます。

INTERVALYEARTOMONTH

オブジェクト

カスタム

"until" : "P-123Y3M"
"until" : "P3M"

ISO 8601の「期間」の形式を使用して表されます。期間が0のコンポーネントは、オプションとみなされます。

INTERVALDAYTOSECOND

オブジェクト

カスタム

"until" : "P-5DT3H55M"
"until" : "PT3H55M"

ISO 8601の「期間」の形式を使用して表されます。期間が0のコンポーネントは、オプションとみなされます

LONG

文字列

v1

*as VARCHAR

 

LONG RAW

文字列

カスタム

"long_code" : { "SEVMTE8gV09STEQh"

 

BLOB

文字列

カスタム

"bin" : {
"base64_value" : "bGVhc3VyZS4="
}
 
 

CLOB

文字列

カスタム

"text" : {
"value" : "Hello World!
"
}
 

BFILE

オブジェクト

カスタム

"file" : {
"locator" : "TARGET_DIR",
"filename" : "myfile"
}
 

BOOLEAN

true|false

v1

"right" : true
"wrong" : false
 

B.2 構造化されたデータベース・タイプの処理

この項では、構造化されたデータベース・タイプがどのように処理されるかを説明します。

オブジェクト型

これの例外は、ORDSがGeoJSONなど業界標準のタイプとして受け入れられているエンコーディングを採用した場合です。

サンプル・コード・スニペットを次に示します。

"address" : {

"number" : 42,

"street" : "Wallaby Way",

"city" : "Sydney"

}

継承

オブジェクト型の継承はサポートされません。マーシャリング目的で、オブジェクト型はすべて、残された具体的な型であるように扱われます。

PL/SQLレコード

PL/SQLレコードはサポートされていません。

VARRAYS

VARRAYSは、JSON配列型に直接マップされます。

サンプル・コード・スニペットを次に示します。

"addresses" : [

{

"__db_type" : "MY_SCHEMA.AUS_ADDRESS",

"number" : 42,

"street" : "Wallaby Way",

"city" : "Sydney"

},

{

"__db_type" : "MY_SCHEMA.UK_ADDRESS"

"number : 1,

"street" : "Oracle Parkway"

"city" : "Reading"

"postcode" : "RG6 1RA"

}

]

要素の継承

VARRAY要素インスタンスの型が定義された型のサブタイプである場合、オブジェクト型の項で説明されているように、__db_typeという名前の値を追加することが必須になります。

連想配列

連想配列(以前はPL/SQL表または索引付き表と呼ばれていました)は、次の2つのカテゴリに分けられます。
  • 整数値による索引付け: 移入されたデータが少ない索引付けられた配列。この型の配列は、指定の索引に値を提供しない場合があります。この型の配列とJSONの間で変換が行われる場合、索引は無視され、索引付け可能な値ギャップは削除されます。これには、PL/SQLプロシージャを介してIN/OUTパラメータとして渡された、変更のない移入データの少ない索引付き配列が、索引付け可能な値ギャップが削除されたために、変更されたように見えるという副作用があります。

    サンプル・コード・スニペットを次に示します。

    
    "avg_values" : [
    
    34,
    
    57,
    
    86,
    
    3235
    
    ]
    :
  • 整数値によって索引付けられていない: たとえば、VARCHAR。このカテゴリは、Oracle JDBC APIではめったに使用されないため、サポートされません。

B.3 Oracle Geospacial Encoding

Oracle Geospacial型には、事前に定義されたOracleオブジェクト型より多くのものが含まれます。ただし、JSONエンコード・コールを認識すると、インスタンス・データのエンコードにはGeoJSONが使用されます。

関連トピック

B.4 データベース・マッピング・サポートの有効化

この項では、拡張データベース・マッピング・サポートを有効化する方法を示します。

拡張データベース・マッピング・サポートを有効にするには、Oracle REST Data Services構成のordsディレクトリにあるOracle REST Data Services defaults.xmlファイルに、次のコード・スニペットを追加する必要があります。

<entry key="misc.datatypes.enable">true</entry>