AnyDataクラスは、型情報と実際のデータをカプセル化して自己記述データをモデル化します。AnyDataは、主にOCCIアドバンスト・キューイング機能とともに使用されデータを表示およびエンキューして、キューからのメッセージをAnyDataインスタンスとして受け取ります。
ほとんどのSQL型とユーザー定義型は、setFromxxx()メソッドを使用してAnyData型に変換できます。AnyDataオブジェクトは、getAsxxx()メソッドを使用してほとんどのSQL型およびユーザー定義型に変換できます。SYS.ANYDATA型により、AnyDataはSQLとPL/SQLの両方でモデル化されます。
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();