oo4oを使う

oo4oは Oracleが提供するデータアクセス用の OLEオブジェクトです。これを Delphi3で使うことは可能です(Ver2は未確認)。タイプライブラリを取り込むとコンパイルエラーが出るのでこの方法はお勧めできません。すべてのオブジェクトを Variant型で定義して使用するレイトバインディングの方法を例示します。VBでは ( ) を使用していた個所がいくつか [ ] で表記するのに注意してください。

■ Delphiから oo4oを使用する例
  implementation

  {$R *.DFM}

  uses
    ComObj;

  var
    objOraSession   : variant; {セッションオブジェクト}
    objOraDatabase  : variant; {データベースオブジェクト}
    objOraDynaset   : variant; {ダイナセットオブジェクト}

  //接続してレコードを追加する処理
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    Screen.Cursor   :=  crHourGlass;
    {Session}
    objOraSession   :=  CreateOleObject('OracleInProcServer.XOraSession');
    {Database}
    objOraDatabase  :=  objOraSession.OpenDatabase['sid','scott/tiger', $0];
    {Dynaset}
    objOraDynaset   :=  objOraDatabase.dbCreateDynaset['SELECT * FROM TBL_SB WHERE SBNO BETWEEN 18000 AND 19000', $0];  
    {レコード件数}
    Label1.Caption  :=  IntToStr(objOraDynaset.RecordCount);

    {Field}
    ListBox1.Items.BeginUpdate;
    objOraDynaset.MoveFirst;
    while not objOraDynaset.EOF do  begin
      {フィールド内容}
      ListBox1.Items.Add(objOraDynaset.Fields['FIELD'].Value);
      objOraDynaset.MoveNext;
    end;
    ListBox1.Items.EndUpdate;

    try
      {追加SQL発行}
      objOraDatabase.ExecuteSQL('INSERT INTO TBL_SB VALUES (9999,1,''Borland'',''Delphi'')');
    finally
      objOraDynaset.Close;
      Screen.Cursor   :=  crDefault;
    end;
  end;

  //終了処理
  procedure TForm1.Button2Click(Sender: TObject);
  begin
    Screen.Cursor   :=  crHourGlass;
    objOraDatabase.Close;
    Screen.Cursor   :=  crDefault;
  end;