294 ANYDATASETタイプ
ANYDATASET
タイプ
には、特定のタイプの説明およびそのタイプの一連のデータ・インスタンスが含まれています。ANYDATASET
は、必要に応じて、データベースに永続的に格納したり、自己記述型のデータ・セットと通信するインタフェース・パラメータとして使用できます。このデータ・セットは、すべて特定のタイプに属します。
この章のトピックは、次のとおりです:
294.1 ANYDATASETタイプの構成
ANYDATASET
は、値ごとに順番に構成する必要があります。
ANYDATASET
タイプの各データ・インスタンスについて、ADDINSTANCE
ファンクションを起動する必要があります。これにより、ANYDATASET
に新規データ・インスタンスが追加されます。次に、SET*
をコールして値をすべて設定できます。
構成およびアクセスのMODE
は、PIECEWISE
へのコールを実行して属性またはコレクション要素単位で変更できます。
-
ANYDATASETのタイプが
TYPECODE_OBJECT
である場合、後続のSET*
コールを使用して個々の属性を設定します。アクセスについても同様です。 -
現行のデータ値のタイプがコレクション・タイプである場合は、後続の
SET*
コールを使用して、個々のコレクション要素を設定します。アクセスについても同様です。このコールはANYDATA
タイプに対して定義されるANYDATA.PIECEWISE
コールに非常に似ています。
オブジェクト・タイプまたはコレクション・タイプのネストされた属性(最上位レベルを除く)の個別の構成またはアクセスはサポートされていません。
構成プロセスを終了するには、ENDCREATE
をコールする必要があります(アクセス・コールが実行される前)。
294.2 ANYDATASETタイプのサブプログラムの要約
この表は、ANYDATASET
タイプのサブプログラムを示し、簡単に説明しています。
表294-1 ANYDATASETタイプのサブプログラム
サブプログラム | 説明 |
---|---|
|
|
指定の |
|
|
|
現行のデータ値(適切なタイプのデータ値)を取得します。 |
|
|
|
|
|
現行のデータ値(適切なタイプのデータ値)。 |
|
|
|
1回ごとに現行のデータ値が属性となるように構成およびアクセスの |
|
現行のデータ値を設定します。 |
294.2.1 ADDINSTANCEメンバー・プロシージャ
このプロシージャは、ANYDATASET
に新規データ・インスタンスを追加します。
構文
MEMBER PROCEDURE AddInstance( self IN OUT NOCOPY ANYDATASET);
パラメータ
表294-2 ADDINSTANCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
構成される |
例外
DBMS_TYPES.invalid_parameters: Invalid parameters. DBMS_TYPES.incorrect_usage: On incorrect usage.
使用上のノート
データ・インスタンスは順番に追加する必要があります。新しいデータ・インスタンスを追加する前に、前のデータ・インスタンスが完全に構成されているか、NULLに設定されている必要があります。
このコールを実行しても、構成が個別モードで自動的に設定されることはありません。個別にインスタンスを構成するには、PIECEWISE
を明示的にコールする必要があります。
294.2.2 BEGINCREATE静的プロシージャ
このプロシージャは、指定のANYTYPE
の一連のデータ値を作成できるANYDATASET
を新規に作成します。
構文
STATIC PROCEDURE BeginCreate( typecode IN PLS_INTEGER, rtype IN OUT NOCOPY AnyType, aset OUT NOCOPY ANYDATASET);
パラメータ
表294-3 BEGINCREATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
データ値のタイプ。このパラメータは、 |
|
構成される |
例外
DBMS_TYPES.invalid_parameters: dtypeは無効です(完全に構成されていない、および同様の障害)。
294.2.3 ENDCREATEメンバー・プロシージャ
このプロシージャは、ANYDATASET
の作成を終了します。このコール以降は、その他の作成ファンクションをコールすることはできません。
構文
MEMBER PROCEDURE ENDCREATE( self IN OUT NOCOPY ANYDATASET);
パラメータ
表294-4 ENDCREATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
構成される |
294.2.4 GET*メンバー・ファンクション
これらのファンクションは、現行のデータ値(適切なタイプのデータ値)を取得します。
現在のデータ値のタイプは、アクセスに使用するMODE
により異なります。つまり、PIECEWISE
コールを起動しているかどうかにより異なります。PIECEWISE
がコールされていない場合は、インスタンスに完全にアクセスし、データ値のタイプはANYDATASET
のタイプと一致する必要があります。
PIECEWISE
がコールされている場合、インスタンスは個別にアクセスされます。データ値のタイプは、現在の位置での属性のタイプ(またはコレクション要素)に一致する必要があります。
構文
MEMBER FUNCTION GETBDOUBLE( self IN ANYDATASET, dbl OUT NOCOPY BINARY_DOUBLE) RETURN PLS_INTEGER; MEMBER FUNCTION GETBFLOAT( self IN ANYDATASET, fl OUT NOCOPY BINARY_FLOAT) RETURN PLS_INTEGER; MEMBER FUNCTION GETBFILE( self IN ANYDATASET, b OUT NOCOPY BFILE) RETURN PLS_INTEGER; MEMBER FUNCTION GETBLOB( self IN ANYDATASET, b OUT NOCOPY BLOB) RETURN PLS_INTEGER; MEMBER FUNCTION GETCHAR( self IN ANYDATASET, c OUT NOCOPY CHAR) RETURN PLS_INTEGER; MEMBER FUNCTION GETCLOB( self IN ANYDATASET, c OUT NOCOPY CLOB) RETURN PLS_INTEGER; MEMBER FUNCTION GETCOLLECTION( self IN ANYDATASET, col OUT NOCOPY "<collection_type>") RETURN PLS_INTEGER; MEMBER FUNCTION GETDATE( self IN ANYDATASET, dat OUT NOCOPY DATE) RETURN PLS_INTEGER; MEMBER FUNCTION GETINTERVALDS( self IN ANYDATASET, inv IN OUT NOCOPY INTERVAL DAY TO SECOND) RETURN PLS_INTEGER; MEMBER FUNCTION GETINTERVALYM( self IN ANYDATASET, inv IN OUT NOCOPY INTERVAL YEAR TO MONTH) RETURN PLS_INTEGER; MEMBER FUNCTION GETNCHAR( self IN ANYDATASET, nc OUT NOCOPY NCHAR) RETURN PLS_INTEGER; MEMBER FUNCTION GETNCLOB( self IN ANYDATASET, nc OUT NOCOPY NCLOB) RETURN PLS_INTEGER; MEMBER FUNCTION GETNUMBER( self IN ANYDATASET, num OUT NOCOPY NUMBER) RETURN PLS_INTEGER; MEMBER FUNCTION GETNVARCHAR2( self IN ANYDATASET, nc OUT NOCOPY NVARCHAR2) RETURN PLS_INTEGER; MEMBER FUNCTION GETOBJECT( self IN ANYDATASET, obj OUT NOCOPY "<object_type>") RETURN PLS_INTEGER; MEMBER FUNCTION GETRAW( self IN ANYDATASET, r OUT NOCOPY RAW) RETURN PLS_INTEGER; MEMBER FUNCTION GETREF( self IN ANYDATASET, rf OUT NOCOPY REF "<object_type>") RETURN PLS_INTEGER; MEMBER FUNCTION GETTIMESTAMP( self IN ANYDATASET, RETURN PLS_INTEGER; MEMBER FUNCTION GETTIMESTAMPLTZ( self IN ANYDATASET, ts OUT NOCOPY TIMESTAMP WITH LOCAL TIME ZONE) RETURN PLS_INTEGER; MEMBER FUNCTION GETTIMESTAMPTZ( self IN ANYDATASET, ts OUT NOCOPY TIMESTAMP WITH TIME ZONE) RETURN PLS_INTEGER, MEMBER FUNCTION GETUROWID( self IN ANYDATASET, rid OUT NOCOPY UROWID) RETURN PLS_INTEGER MEMBER FUNCTION GETVARCHAR( self IN ANYDATASET, c OUT NOCOPY VARCHAR) RETURN PLS_INTEGER; MEMBER FUNCTION GETVARCHAR2( self IN ANYDATASET, c OUT NOCOPY VARCHAR2) RETURN PLS_INTEGER;
パラメータ
表294-5 GET*ファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
アクセスされる |
|
取得する数値などの関連情報。 |
戻り値
DBMS_TYPES.SUCCESS
またはDBMS_TYPES.NO_DATA
PIECEWISE
がコレクションに対してすでにコールされている場合にのみ、戻り値が関連します。このような場合、全要素にアクセスしたときにDBMS_TYPES.NO_DATAはコレクションの終了を示します。
例外
DBMS_TYPES.INVALID_PARAMETER
: 無効なパラメータ(作成プロセスのこの時点での数値の追加が適切ではない場合)。
DBMS_TYPES.INCORRECT_USAGE
: 不適切な使用。
DBMS_TYPES.TYPE_MISMATCH
: 予想されたタイプが渡されたタイプと異なる場合。
294.2.5 GETCOUNTメンバー・ファンクション
このファンクションは、ANYDATASET
のデータ・インスタンスの数を取得します。
構文
MEMBER FUNCTION GetCount( self IN ANYDATASET) RETURN PLS_INTEGER;
パラメータ
表294-6 GETCOUNTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
アクセスされる |
戻り値
データ・インスタンスの数。
294.2.6 GETINSTANCEメンバー・ファンクション
このファンクションは、ANYDATASET
の次のインスタンスを取得します。ANYDATASET
のインスタンスへの順次アクセスのみが許可されます。
このファンクションのコール後、GET*
ファンクションをANYDATASET
で起動して現在のインスタンスにアクセスできます。GET*
コールの前にPIECEWISE
をコールすると、個々の属性(またはコレクション要素)にアクセスできます。
ANYDATASET
が完全に作成される前にこのファンクションを起動すると、エラーが発生します。
構文
MEMBER FUNCTION GETINSTANCE( self IN OUT NOCOPY ANYDATASET) RETURN PLS_INTEGER;
パラメータ
表294-7 GETINSTANCEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
アクセスされる |
戻り値
DBMS_TYPES.SUCCESS
またはDBMS_TYPES.NO_DATA
DBMS_TYPES.NO_DATA
は、ANYDATASET
の終わり(すべてのインスタンスがアクセスしたこと)を示します。
使用上のノート
このファンクションは、最初のインスタンスにアクセスする前にコールしてください。
294.2.7 GETTYPEメンバー・ファンクション
このファンクションは、ANYDATASET
でデータ・インスタンスのタイプを説明するAnyType
を取得します。
構文
MEMBER FUNCTION GETTYPE( self IN ANYDATASET, typ OUT NOCOPY AnyType) RETURN PLS_INTEGER;
パラメータ
表294-8 GETTYPEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
AnyDataに対応する |
戻り値
ANYDATA
のタイプに対応するtypecode。
294.2.8 GETTYPENAMEメンバー・ファンクション
このプロシージャは、ANYDATASET
の完全修飾名を取得します。
ANYDATASET
が組込みタイプに基づいている場合、このファンクションはNUMBER
および関連情報を戻します。
ユーザー定義タイプに基づいている場合、このファンクションはschema_name.type_name(SCOTT.FOOなど)を戻します。
一時的な匿名タイプに基づいている場合、このファンクションはNULL
を戻します。
構文
MEMBER FUNCTION GETTYPENAME( self IN ANYDATASET) RETURN VARCHAR2;
パラメータ
表294-9 GETTYPENAMEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
構成されるANYDATASET。 |
戻り値
ANYDATASET
のタイプ名。
294.2.9 PIECEWISEメンバー・プロシージャ
このプロシージャは、1回ごとに現行のデータ値が属性となるように構成およびアクセスのMODE
を設定します(データ値がTYPECODE_OBJECT
の場合)。
構成MODE
、コレクション要素となるデータ値のアクセスを一度に設定します(データ値がコレクションTYPE
の場合)。このコールが実行されると、後続の SET*
およびGET*
へのコールにより順番に個別の属性またはコレクション要素が取得されます。
構文
MEMBER PROCEDURE PIECEWISE( self IN OUT NOCOPY ANYDATASET);
パラメータ
表294-10 PIECEWISEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
構成されるANYDATASET。 |
例外
DBMS_TYPES.INVALID_PARAMETERS
: 無効なパラメータ。
DBMS_TYPES.INCORRECT_USAGE
: 不適切な使用。
使用上のノート
このコールを実行するには、現行のデータ値がオブジェクトまたはコレクションのタイプである必要があります。埋め込まれたオブジェクト・タイプの属性またはネストされたコレクションの個別の構成またはアクセスはサポートされていません。
294.2.10 SET*メンバー・プロシージャ
このプロシージャは、現行のデータ値を設定します。
現行のデータ値のタイプは、構成中のMODE
により異なります(つまり、PIECEWISE
コールを起動した方法により異なります)。PIECEWISE
がコールされていない場合は、現行のデータ・タイプがANYDATASET
のタイプである必要があります。PIECEWISE
がコールされている場合は、現在の位置での属性のタイプにします。
構文
MEMBER PROCEDURE SETBDOUBLE( self IN OUT NOCOPY ANYDATASET, dbl IN BINARY_DOUBLE, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETBFLOAT( self IN OUT NOCOPY ANYDATASET, fl IN BINARY_FLOAT, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETBFILE( self IN OUT NOCOPY ANYDATASET, b IN BFILE, last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETBLOB( self IN OUT NOCOPY ANYDATASET, b IN BLOB, last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETCHAR( self IN OUT NOCOPY ANYDATASET, c IN CHAR, last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETCLOB( self IN OUT NOCOPY ANYDATASET, c IN CLOB, last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETCOLLECTION( self IN OUT NOCOPY ANYDATASET, col IN "<collection_type>", last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETDATE( self IN OUT NOCOPY ANYDATASET, dat IN DATE, last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETINTERVALDS( self IN OUT NOCOPY ANYDATASET, inv IN INTERVAL DAY TO SECOND, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETINTERVALYM( self IN OUT NOCOPY ANYDATASET, inv IN INTERVAL YEAR TO MONTH, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETNCHAR( self IN OUT NOCOPY ANYDATASET, nc IN NCHAR, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETNCLOB( self IN OUT NOCOPY ANYDATASET, nc IN NClob, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETNUMBER( self IN OUT NOCOPY ANYDATASET, num IN NUMBER, last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETNVARCHAR2( self IN OUT NOCOPY ANYDATASET, nc IN NVarchar2, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETOBJECT( self IN OUT NOCOPY ANYDATASET, obj IN "<object_type>", last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETRAW( self IN OUT NOCOPY ANYDATASET, r IN RAW, last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETREF( self IN OUT NOCOPY ANYDATASET, rf IN REF "<object_type>", last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETTIMESTAMP( self IN OUT NOCOPY ANYDATASET, ts IN TIMESTAMP, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETTIMESTAMPLTZ( self IN OUT NOCOPY ANYDATASET, ts IN TIMESTAMP WITH LOCAL TIME ZONE, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETTIMESTAMPTZ( self IN OUT NOCOPY ANYDATASET, ts IN TIMESTAMP WITH TIME ZONE, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETUROWID( self IN OUT NOCOPY ANYDATASET, rid IN UROWID, last_elem IN BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETVARCHAR( self IN OUT NOCOPY ANYDATASET, c IN VARCHAR, last_elem BOOLEAN DEFAULT FALSE); MEMBER PROCEDURE SETVARCHAR2( self IN OUT NOCOPY ANYDATASET, c IN VARCHAR2, last_elem BOOLEAN DEFAULT FALSE);
パラメータ
表294-11 SET*プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
アクセスされる |
|
設定する数値などの関連情報。 |
|
|
例外
-
DBMS_TYPES.INVALID_PARAMETERS
: 無効なパラメータ(作成プロセスのこの時点での数値の追加が適切ではない場合)。 -
DBMS_TYPES.INCORRECT_USAGE
: 不適切な使用。 -
DBMS_TYPES.TYPE_MISMATCH
: 予想されたタイプが渡されたタイプと異なる場合。