AnyData
クラスは、型情報と実際のデータをカプセル化して自己記述データをモデル化します。AnyData
は、主にOCCIアドバンスト・キューイング機能とともに使用されデータを表示およびエンキューして、キューからのメッセージをAnyData
インスタンスとして受け取ります。
ほとんどのSQL型とユーザー定義型は、setFrom
xxx
()
メソッドを使用してAnyData
型に変換できます。AnyData
オブジェクトは、getAs
xxx
()
メソッドを使用してほとんどのSQL型およびユーザー定義型に変換できます。SYS.ANYDATA
型により、AnyData
はSQLとPL/SQLの両方でモデル化されます。サポートされているデータ型については、表13-4「AnyDataクラスでサポートされているOCCIデータ型」を参照してください。
getType()のコールではAnyData
オブジェクトが表すTypeCode
が戻されますが、isNull()のコールではAnyData
にNULL
値が含まれているかどうかが判別されます。setNull()メソッドは、AnyData
の値をNULL
に設定します。
OCCI AnyData
型を使用するには、環境をOBJECT
モードで開始する必要があります。
例13-1 事前定義済のSQL型からAnyData型への変換
この例は、string
型からAnyData
型に変換する方法を示しています。
Connection *conn; ... AnyData any(conn); string str("Hello World"); any.setFromString(str); ...
例13-2 AnyData型からの事前定義済のSQL型の作成
この例は、AnyData
オブジェクトをstring
オブジェクトに変換する方法を示しています。変換前にAnyData
型を検証するために、getType()およびisNull()メソッドが使用されていることに注意してください。
Connection *conn; string str; ... if(!any.isNULL()) { if(any.getType()==OCCI_TYPECODE_VARCHAR2) { str = any.getAsString(); cout<<str; } } ...
例13-3 ユーザー定義型からAnyData型への変換
この例は、ユーザー定義型からAnyData
型に変換する方法を示しています。
Connection *conn; ... // Assume an OBJECT of type Person with the following defined fields // CREATE TYPE person as OBJECT ( // FRIST_NAME VARCHAR2(20), // LAST_NAME VARCHAR2(25), // EMAIL VARCHAR2(25), // SALARY NUMBER(8,2) // ); // Assume relevant classes have been generated by OTT. ... Person *pers new Person( "Steve", "Addams", "steve.addams@anycompany.com", 50000.00); AnyData anyObj(conn); anyObj.setFromObject(pers); ...
例13-4 ユーザー定義型からAnyData型への変換
この例は、AnyData
オブジェクトをユーザー定義型に変換する方法を示しています。変換前にAnyData
型を検証するために、getType()およびisNull()メソッドが使用されていることに注意してください。
Connection *conn; // Assume an OBJECT of type Person with the following defined fields // CREATE TYPE person as OBJECT ( // FRIST_NAME VARCHAR2(20), // LAST_NAME VARCHAR2(25), // EMAIL VARCHAR2(25), // SALARY NUMBER(8,2) // ); // Assume relevant classes have been generated by OTT. Person *pers = new Person(); ... If(!anyObj.isNull()) { if(anyObj.getType()==OCCI_TYPECODE_OBJECT) pers = anyObj.getAsObject(); } ...
表13-4 AnyDataクラスでサポートされているOCCIデータ型
データ型 | TypeCode |
---|---|
BDouble |
OCCI_TYPECODE_BDOUBLE |
BFile |
OCCI_TYPECODE_BFILE |
BFloat |
OCCI_TYPECODE_BFLOAT |
Bytes |
OCCI_TYPECODE_RAW |
Date |
OCCI_TYPECODE_DATE |
IntervalDS |
OCCI_TYPECODE_INTERVAL_DS |
IntervalYM |
OCCI_TYPECODE_INTERVAL_YM |
Number |
OCCI_TYPECODE_NUMBERB |
PObject |
OCCI_TYPECODE_OBJECT |
Ref |
OCCI_TYPECODE_REF |
string |
OCCI_TYPECODE_VARCHAR2 |
TimeStamp |
OCCI_TYPECODE_TIMESTAMP |
メソッド | 概要 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ネームスペース |
|
|
|
|
AnyData
のコンストラクタです。
構文
AnyData( const Connection *conn);
パラメータ | 説明 |
---|---|
conn |
接続を指定します。 |
AnyData
オブジェクトをBDouble
に変換します。
構文
BDouble getAsBDouble() const;
AnyData
オブジェクトをBfile
に変換します。
構文
Bfile getAsBfile() const;
AnyData
オブジェクトをBFloat
に変換します。
構文
BFloat getAsBFloat() const;
AnyData
オブジェクトをBytesに変換します。
構文
Bytes getAsBytes() const;
AnyData
オブジェクトをDate
に変換します。
構文
Date getAsDate() const;
AnyData
オブジェクトをIntervalDS
に変換します。
構文
IntervalDS getAsIntervalDS() const;
AnyData
オブジェクトをIntervalYM
に変換します。
構文
IntervalYS getAsIntervalYM() const;
AnyData
オブジェクトをNumber
に変換します。
構文
Number getAsNumber() const;
AnyData
オブジェクトをPObject
に変換します。
構文
PObject* getAsObject() const;
AnyData
オブジェクトをRefAny
に変換します。
構文
RefAny getAsRef() const;
AnyData
オブジェクトをネームスペースstring
に変換します。
構文
string getAsString() const;
AnyData
オブジェクトをTimestamp
に変換します。
構文
Timestamp getAsTimestamp() const;
AnyData
オブジェクトに保持されているデータ型を取得します。TypeCode
の有効な値については、表13-4を参照してください。
構文
TypeCode getType();
AnyData
オブジェクトがNULL
かどうかをテストします。AnyData
オブジェクトがNULL
の場合はTRUE
を、それ以外の場合はFALSE
を戻します。
構文
bool isNull() const;
BDouble
をAnyData
に変換します。
構文
void setFromBDouble( const BDouble& bdouble);
パラメータ | 説明 |
---|---|
bdouble |
AnyData に変換するBDouble を指定します。 |
Bfile
をAnyData
に変換します。
構文
void setFromBfile( const Bfile& bfile);
パラメータ | 説明 |
---|---|
bfile |
AnyData に変換するBfile を指定します。 |
BFloat
をAnyData
に変換します。
構文
void setFromBFloat( const BFloat& bfloat);
パラメータ | 説明 |
---|---|
bfloat |
AnyData に変換するBFloat を指定します。 |
Bytes
をAnyData
に変換します。
構文
void setFromBytes( const Bytes& bytes);
パラメータ | 説明 |
---|---|
bytes |
AnyData に変換するBytes を指定します。 |
Date
をAnyData
に変換します。
構文
void setFromDate( const Date& date);
パラメータ | 説明 |
---|---|
date |
AnyData に変換するDate を指定します。 |
IntervalDS
をAnyData
に変換します。
構文
void setFromIntervalDS( const IntervalDS& intervalds);
パラメータ | 説明 |
---|---|
invtervalds |
AnyData に変換するIntervalDS を指定します。 |
IntervalYM
をAnyData
に変換します。
構文
void setFromIntervalYM( const IntervalYM& intervalym);
パラメータ | 説明 |
---|---|
invalym |
AnyData に変換するIntervalYM を指定します。 |
Number
をAnyData
に変換します。
構文
void setFromNumber( const Number& num);
パラメータ | 説明 |
---|---|
num |
AnyData に変換するNumber を指定します。 |
PObject
をAnyData
に変換します。
構文
void setFromObject( const PObject* objptr);
パラメータ | 説明 |
---|---|
objptr |
AnyData に変換するPObject を指定します。 |
PObject
をAnyData
に変換します。
構文
void setFromRef( const RefAny& ref const string &typeName, const string &schema);
パラメータ | 説明 |
---|---|
ref |
AnyData に変換するRefAny を指定します。 |
typeName |
型の名前を指定します。 |
schema |
型が定義されているスキーマの名前を指定します。 |
ネームスペースstring
をAnyData
に変換します。
構文
void setFromString( string& str);
パラメータ | 説明 |
---|---|
str |
AnyData に変換するネームスペースstring を指定します。 |
Timestamp
をAnyData
に変換します。
構文
void setFromTimestamp( const Timestamp& timestamp);
パラメータ | 説明 |
---|---|
timestamp |
AnyData に変換するTimestamp を指定します。 |
AnyData
オブジェクトをNULL
に設定します。
構文
void setNull();