13.4 AnyDataクラス
AnyDataクラスは、型情報と実際のデータをカプセル化して自己記述データをモデル化します。AnyDataは、主にOCCIアドバンスト・キューイング機能とともに使用されデータを表示およびエンキューして、キューからのメッセージをAnyDataインスタンスとして受け取ります。
                  
ほとんどのSQL型とユーザー定義型は、setFromxxx()メソッドを使用してAnyData型に変換できます。AnyDataオブジェクトは、getAsxxx()メソッドを使用してほとんどのSQL型およびユーザー定義型に変換できます。SYS.ANYDATA型により、AnyDataはSQLとPL/SQLの両方でモデル化されます。サポートされるデータ型については、表13-4を参照してください。
                  
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データ型
| データ型 | 型コード | 
|---|---|
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  | 
                        
表13-5 AnyDataメソッドの概要
| メソッド | 概要 | 
|---|---|
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                                  | 
                        |
| 
                               
  | 
                        |
| 
                               
  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        |
| 
                                ネームスペース  | 
                        |
| 
                                  | 
                        |
| 
                                  | 
                        
13.4.15 isNull()
AnyDataオブジェクトがNULLかどうかをテストします。AnyDataオブジェクトがNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。
                     
構文
bool isNull() const;
13.4.16 setFromBDouble()
BDoubleをAnyDataに変換します。
                     
構文
void setFromBDouble( const BDouble& bdouble);
| パラメータ | 説明 | 
|---|---|
bdouble  | 
                              
                                  
  | 
                           
13.4.17 setFromBfile()
BfileをAnyDataに変換します。
                     
構文
void setFromBfile( const Bfile& bfile);
| パラメータ | 説明 | 
|---|---|
bfile  | 
                              
                                  
  | 
                           
13.4.18 setFromBFloat()
BFloatをAnyDataに変換します。
                     
構文
void setFromBFloat( const BFloat& bfloat);
| パラメータ | 説明 | 
|---|---|
bfloat  | 
                              
                                  
  | 
                           
13.4.19 setFromBytes()
BytesをAnyDataに変換します。
                     
構文
void setFromBytes( const Bytes& bytes);
| パラメータ | 説明 | 
|---|---|
bytes  | 
                              
                                  
  | 
                           
13.4.20 setFromDate()
DateをAnyDataに変換します。
                     
構文
void setFromDate( const Date& date);
| パラメータ | 説明 | 
|---|---|
date  | 
                              
                                  
  | 
                           
13.4.21 setFromIntervalDS()
IntervalDSをAnyDataに変換します。
                     
構文
void setFromIntervalDS( const IntervalDS& intervalds);
| パラメータ | 説明 | 
|---|---|
invtervalds  | 
                              
                                  
  | 
                           
13.4.22 setFromIntervalYM()
IntervalYMをAnyDataに変換します。
                     
構文
void setFromIntervalYM( const IntervalYM& intervalym);
| パラメータ | 説明 | 
|---|---|
invalym  | 
                              
                                  
  | 
                           
13.4.23 setFromNumber()
NumberをAnyDataに変換します。
                     
構文
void setFromNumber( const Number& num);
| パラメータ | 説明 | 
|---|---|
num  | 
                              
                                  
  | 
                           
13.4.24 setFromObject()
PObjectをAnyDataに変換します。
                     
構文
void setFromObject( const PObject* objptr);
| パラメータ | 説明 | 
|---|---|
objptr  | 
                              
                                  
  | 
                           
13.4.25 setFromRef()
PObjectをAnyDataに変換します。
                     
構文
void setFromRef( const RefAny& ref const string &typeName, const string &schema);
| パラメータ | 説明 | 
|---|---|
ref  | 
                              
                                  
  | 
                           
typeName  | 
                              
                                  型の名前です。  | 
                           
schema  | 
                              
                                  型が定義されているスキーマの名前を指定します。  | 
                           
13.4.26 setFromString()
ネームスペースstringをAnyDataに変換します。
                     
構文
void setFromString( string& str);
| パラメータ | 説明 | 
|---|---|
str  | 
                              
                                  
  | 
                           
13.4.27 setFromTimestamp()
TimestampをAnyDataに変換します。
                     
構文
void setFromTimestamp( const Timestamp& timestamp);
| パラメータ | 説明 | 
|---|---|
timestamp  | 
                              
                                  
  |