AnyDataクラス

AnyDataクラスは、型情報と実際のデータをカプセル化して自己記述データをモデル化します。AnyDataは、主にOCCIアドバンスト・キューイング機能とともに使用されデータを表示およびエンキューして、キューからのメッセージをAnyDataインスタンスとして受け取ります。

ほとんどのSQL型とユーザー定義型は、setFromxxx()メソッドを使用してAnyData型に変換できます。AnyDataオブジェクトは、getAsxxx()メソッドを使用してほとんどのSQL型およびユーザー定義型に変換できます。SYS.ANYDATA型により、AnyDataはSQLとPL/SQLの両方でモデル化されます。サポートされるデータ型については、表13-4を参照してください。

getType()のコールではAnyDataオブジェクトが表すTypeCodeが戻されますが、isNull()のコールではAnyDataNULL値が含まれているかどうかが判別されます。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メソッドの概要

メソッド 概要

AnyData()

AnyDataクラスのコンストラクタです。

getAsBDouble()

AnyDataオブジェクトをBDoubleに変換します。

getAsBfile()

AnyDataオブジェクトをBfileに変換します。

getAsBFloat()

AnyDataオブジェクトをBFloatに変換します。

getAsBytes()

AnyDataオブジェクトをBytesに変換します。

getAsDate()

AnyDataオブジェクトをDateに変換します。

getAsIntervalDS()

AnyDataオブジェクトをIntervalDSに変換します。

getAsIntervalYM()

AnyDataオブジェクトをIntervalYMに変換します。

getAsNumber()

AnyDataオブジェクトをNumberに変換します。

getAsObject()

AnyDataオブジェクトをPObjectに変換します。

getAsRef()

AnyDataオブジェクトをRefAnyに変換します。

getAsString()

AnyDataオブジェクトをネームスペースstringに変換します。

getAsTimestamp()

AnyDataオブジェクトをTimestampに変換します。

getType()

AnyDataオブジェクトに保持されているDataTypeを取得します。表13-4を参照してください。

isNull()

AnyDataオブジェクトがNULLかどうかをテストします。

setFromBDouble()

BDoubleAnydataに変換します。

setFromBfile()

BfileAnydataに変換します。

setFromBFloat()

BFloatAnydataに変換します。

setFromBytes()

BytesAnydataに変換します。

setFromDate()

DateAnydataに変換します。

setFromIntervalDS()

IntervalDSAnydataに変換します。

setFromIntervalYM()

IntervalYMAnydataに変換します。

setFromNumber()

NumberAnydataに変換します。

setFromObject()

PObjectAnydataに変換します。

setFromRef()

RefAnyAnydataに変換します。

setFromString()

ネームスペースstringAnydataに変換します。

setFromTimestamp()

TimestampAnydataに変換します。

setNull()

AnyDataオブジェクトをNULLに設定します。

AnyData()

AnyDataコンストラクタです。

構文

AnyData(
   const Connection *conn); 
パラメータ 説明
conn

接続を指定します。

getAsBDouble()

AnyDataオブジェクトをBDoubleに変換します。

構文

BDouble getAsBDouble() const;

getAsBfile()

AnyDataオブジェクトをBfileに変換します。

構文

Bfile getAsBfile() const;

getAsBFloat()

AnyDataオブジェクトをBFloatに変換します。

構文

BFloat getAsBFloat() const;

getAsBytes()

AnyDataオブジェクトをBytesに変換します。

構文

Bytes getAsBytes() const;

getAsDate()

AnyDataオブジェクトをDateに変換します。

構文

Date getAsDate() const;

getAsIntervalDS()

AnyDataオブジェクトをIntervalDSに変換します。

構文

IntervalDS getAsIntervalDS() const;

getAsIntervalYM()

AnyDataオブジェクトをIntervalYMに変換します。

構文

IntervalYS getAsIntervalYM() const;

getAsNumber()

AnyDataオブジェクトをNumberに変換します。

構文

Number getAsNumber() const;

getAsObject()

AnyDataオブジェクトをPObjectに変換します。

構文

PObject* getAsObject() const;

getAsRef()

AnyDataオブジェクトをRefAnyに変換します。

構文

RefAny getAsRef() const;

getAsString()

AnyDataオブジェクトをネームスペースstringに変換します。

構文

string getAsString() const;

getAsTimestamp()

AnyDataオブジェクトをTimestampに変換します。

構文

Timestamp getAsTimestamp() const;

getType()

AnyDataオブジェクトに保持されているデータ型を取得します。TypeCodeの有効な値については、表13-4を参照してください。

構文

TypeCode getType();

isNull()

AnyDataオブジェクトがNULLかどうかをテストします。AnyDataオブジェクトがNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool isNull() const;

setFromBDouble()

BDoubleAnyDataに変換します。

構文

void setFromBDouble(
   const BDouble& bdouble);
パラメータ 説明
bdouble

AnyDataに変換するBDoubleを指定します。

setFromBfile()

BfileAnyDataに変換します。

構文

void setFromBfile(
   const Bfile& bfile);
パラメータ 説明
bfile

AnyDataに変換するBfileを指定します。

setFromBFloat()

BFloatAnyDataに変換します。

構文

void setFromBFloat(
   const BFloat& bfloat);
パラメータ 説明
bfloat

AnyDataに変換するBFloatを指定します。

setFromBytes()

BytesAnyDataに変換します。

構文

void setFromBytes(
   const Bytes& bytes);
パラメータ 説明
bytes

AnyDataに変換するBytesを指定します。

setFromDate()

DateAnyDataに変換します。

構文

void setFromDate(
   const Date& date);
パラメータ 説明
date

AnyDataに変換するDateを指定します。

setFromIntervalDS()

IntervalDSAnyDataに変換します。

構文

void setFromIntervalDS(
   const IntervalDS& intervalds);
パラメータ 説明
invtervalds

AnyDataに変換するIntervalDSを指定します。

setFromIntervalYM()

IntervalYMAnyDataに変換します。

構文

void setFromIntervalYM(
   const IntervalYM& intervalym);
パラメータ 説明
invalym

AnyDataに変換するIntervalYMを指定します。

setFromNumber()

NumberAnyDataに変換します。

構文

void setFromNumber(
   const Number& num);
パラメータ 説明
num

AnyDataに変換するNumberを指定します。

setFromObject()

PObjectAnyDataに変換します。

構文

void setFromObject(
   const PObject* objptr);
パラメータ 説明
objptr

AnyDataに変換するPObjectを指定します。

setFromRef()

PObjectAnyDataに変換します。

構文

void setFromRef(
   const RefAny& ref
   const string &typeName,
   const string &schema);
パラメータ 説明
ref

AnyDataに変換するRefAnyを指定します。

typeName

型の名前です。

schema

型が定義されているスキーマの名前を指定します。

setFromString()

ネームスペースstringAnyDataに変換します。

構文

void setFromString(
   string& str);
パラメータ 説明
str

AnyDataに変換するネームスペースstringを指定します。

setFromTimestamp()

TimestampAnyDataに変換します。

構文

void setFromTimestamp(
   const Timestamp& timestamp);
パラメータ 説明
timestamp

AnyDataに変換するTimestampを指定します。

setNull()

AnyDataオブジェクトをNULLに設定します。

構文

void setNull();