ANYDATA TYPE は、指定された型のインスタンスとその型に関する説明を含みます。ANYDATA は自己記述的です。
注意
- 現在、PLでのみ
ANYDATAを使用でき、テーブルの列や永続的なストレージとしての使用はサポートされていません。 - 現在、組み込み
LOBを含むANYDATAインスタンスの永続的なストレージタイプはサポートされていません。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構築方法
ANYDATA を構築する方法は以下の2種類があります:
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*メンバー関数 | 現在のデータ値を設定します。 |