Oracle8をORDBMSとして使う場合、たとえば次のようにテーブルを定義することが可能です。
create type tadre as object (
name varchar2(40),
adre varchar2(200),
tel varchar2(12)
);
create type ttadre as varray(3) of tadre;
create table test (
item1 char(10),
item2 char(10),
adre ttadre
);
insert into test values ('a001', 'b002',
ttadre(
tadre(1, '山田太郎', '東京都目黒区大岡山1-1-1', '03-3333-3333'),
tadre(2, '佐藤花子', '東京都世田谷区深澤1-1-1', '03-4444-4444'),
)
);
上記の例で、SELECT adre from test where item1 =
a001で取得したadreフィールドは、オブジェクト型になりますが、
DOAを使って以下のようにこのオブジェクトから各プロパティ(name, adre, tel)
にアクセスすることが可能です。(DOA Object Versionのみ。詳しくは
TOracleObject,
TOracleReferenceのヘルプを参照してください)
//OracleQuery.SQL = SELECT adre from test where item1 = :item1
with OracleQuery do begin
SetVariable('item1', Item1);
Open;
Adr := OracleQuery.ObjField('adre');
if not Adr.IsNull then
showmessage(Query.Field('item1').AsString + ' ' + Adr.GetAttr('name'));
end;
