ANYDATA TYPEは、指定されたデータ型のインスタンスとその型の記述を含みます。ANYDATAは自己記述的です。
注意
- 現在、
ANYDATAはPLでの使用のみをサポートしており、テーブルの列や永続的な格納には対応していません。 - 現在、組み込み
LOBを含むANYDATAインスタンスの永続的な格納タイプはサポートされていません。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
作成方法
ANYDATA を作成する方法は以下の2つです:
1回の
CONVERT *呼び出しでANYDATAを完全に構築します。STATIC FUNCTION ConvertNumber(num IN NUMBER) return AnyData, STATIC FUNCTION ConvertDate(dat IN DATE) return AnyData, STATIC FUNCTION ConvertChar(c IN CHAR) return AnyData, STATIC FUNCTION ConvertVarchar(c IN VARCHAR) return AnyData, STATIC FUNCTION ConvertVarchar2(c IN VARCHAR2) return AnyData, STATIC FUNCTION ConvertRaw(r IN RAW) return AnyData, STATIC FUNCTION ConvertBlob(b IN BLOB) return AnyData, STATIC FUNCTION ConvertClob(c IN CLOB) return AnyData, STATIC FUNCTION ConvertObject(obj IN "<ADT_1>") return AnyData, STATIC FUNCTION ConvertCollection(col IN "<COLLECTION_1>") return AnyData, /* Datetime と Nchar 型の変換呼び出し */ STATIC FUNCTION ConvertTimestamp(ts IN TIMESTAMP_UNCONSTRAINED) return AnyData, STATIC FUNCTION ConvertTimestampTZ(ts IN TIMESTAMP_TZ_UNCONSTRAINED) return AnyData, STATIC FUNCTION ConvertTimestampLTZ(ts IN TIMESTAMP_LTZ_UNCONSTRAINED) return AnyData, STATIC FUNCTION ConvertIntervalYM(inv IN YMINTERVAL_UNCONSTRAINED) return AnyData, STATIC FUNCTION ConvertIntervalDS(inv IN DSINTERVAL_UNCONSTRAINED) return AnyData, STATIC FUNCTION ConvertNchar(nc IN NCHAR) return AnyData, STATIC FUNCTION ConvertNVarchar2(nc IN NVARCHAR2) return AnyData, /* BFloat、BDouble、URowid の変換呼び出し */ STATIC FUNCTION ConvertBFloat(fl IN BINARY_FLOAT) return AnyData, STATIC FUNCTION ConvertBDouble(dbl IN BINARY_DOUBLE) return AnyData, STATIC FUNCTION ConvertURowid(rid IN UROWID) return AnyData,ピースワイズ方式を使用して
ANYDATAを構築します。BEGINCREATE静的ストアドプロシージャの呼び出しで構築プロセスを開始し、ENDCREATEメンバーストアドプロシージャの呼び出しで構築を完了します。この2つの呼び出しの間に、SET*を使用してオブジェクト型の単一の属性またはコレクション要素を設定できます。コレクションのオブジェクトや要素属性にピースワイズでアクセスするには、GET*呼び出しの前にPIECEWISEメンバーストアドプロシージャを呼び出す必要があります。注意
ANYDATAは、最初の属性(またはコレクション要素)から実行順に構築またはアクセスする必要があります。BEGINCREATE呼び出しにより、ピースワイズ構築が自動的に開始されます。BEGINCREATEの後、直ちにPIECEWISEを呼び出す必要はありません。ENDCREATEを呼び出して構築プロセスを完了する必要があります(その前に任意のアクセス呼び出しが可能です)。
アクセス方法
アクセス機能はSQLに基づいています。これらの関数は型が一致しない場合に例外を発生させることはありません。代わりに、ANYDATA の型がアクセスする型に対応していない場合、NULL を返します。クエリで適切な型を返す ANYDATA 関数のみを使用したい場合は、WHERE 句を使用し、GETTYPENAME を用いて興味のある型(例えば SYS.NUMBER)を選択します。各関数は SYS.ANYDATA ワーパー内で指定されたデータ型の値を返します。
MEMBER FUNCTION AccessNumber(self IN AnyData) return NUMBER DETERMINISTIC,
MEMBER FUNCTION AccessDate(self IN AnyData) return DATE DETERMINISTIC,
MEMBER FUNCTION AccessChar(self IN AnyData) return CHAR DETERMINISTIC,
MEMBER FUNCTION AccessVarchar(self IN AnyData) return VARCHAR DETERMINISTIC,
MEMBER FUNCTION AccessVarchar2(self IN AnyData) return VARCHAR2 DETERMINISTIC,
MEMBER FUNCTION AccessRaw(self IN AnyData) return RAW DETERMINISTIC,
MEMBER FUNCTION AccessBlob(self IN AnyData) return BLOB DETERMINISTIC,
MEMBER FUNCTION AccessClob(self IN AnyData) return CLOB DETERMINISTIC,
MEMBER FUNCTION AccessTimestamp(self IN AnyData) return TIMESTAMP_UNCONSTRAINED DETERMINISTIC,
MEMBER FUNCTION AccessTimestampTZ(self IN AnyData) return TIMESTAMP_TZ_UNCONSTRAINED DETERMINISTIC,
MEMBER FUNCTION AccessTimestampLTZ(self IN AnyData) return TIMESTAMP_LTZ_UNCONSTRAINED DETERMINISTIC,
MEMBER FUNCTION AccessIntervalYM(self IN AnyData) return YMINTERVAL_UNCONSTRAINED DETERMINISTIC,
MEMBER FUNCTION AccessIntervalDS(self IN AnyData) return DSINTERVAL_UNCONSTRAINED DETERMINISTIC,
MEMBER FUNCTION AccessNchar(self IN AnyData) return NCHAR DETERMINISTIC,
MEMBER FUNCTION AccessNVarchar2(self IN AnyData) return NVARCHAR2 DETERMINISTIC,
/* Float、Double、Rowidへのアクセス呼び出し*/
MEMBER FUNCTION AccessBFloat(self IN AnyData) return BINARY_FLOAT DETERMINISTIC,
MEMBER FUNCTION AccessBDouble(self IN AnyData) return BINARY_DOUBLE DETERMINISTIC,
MEMBER FUNCTION AccessURowid(self IN AnyData) return UROWID DETERMINISTIC;
ANYDATAサブプログラムの概要
次の表は、OceanBaseデータベースの現在のバージョンでサポートされているANYDATAサブプログラムとその簡単な説明を示しています。
サブプログラム |
説明 |
|---|---|
| BEGINCREATE 静的ストアドプロシージャ | 新しい ANYDATA の作成を開始します。 |
| ENDCREATE メンバーストアドプロシージャ | ANYDATA の作成を終了します。 |
| GET* メンバー関数 | 現在のデータ値を取得します(適切な型である必要があります)。 |
| GETTYPE メンバー関数 | ANYDATA の型を取得します。 |
| GETTYPENAME メンバー関数 | ANYDATA の完全修飾型名を取得します。 |
| PIECEWISE メンバーストアドプロシージャ | 現在のデータ値のアクセスモードをワンショット属性に設定します(データ値が TYPECODE_OBJECT に属する場合)。 |
| SET* メンバーストアドプロシージャ | 現在のデータ値を設定します。 |