目次へ戻ります
VB サンプル


VB オラクル oo4o 操作

Oracle Objects for OLEインプロセス・オートメーション・サーバー OO4Oインプロセス・オートメーション・サーバーは、Oracleデータベースへの接続、SQL文やPL/SQLブロックの実行、および結果へのアクセスのための一連のCOMオートメーション・オブジェクトです。
[参照設定]
  ORACLE7 → Oracle InProc Server 2.2 Type Library
  ORACLE8 → Oracle InProc Server 3.0 Type Library (oip8.tlb)
  ORACLE9 → Oracle InProc Server 4.0 Type Library (oip9.tlb)
  ORACLE10 → Oracle InProc Server 5.0 Type Library (oip10.tlb)
  ※ 上位バージョンは下位バージョンをサポートしていません。

[変数宣言]
  Public OraSession As OraSession
  Public OraDatabase As OraDatabase
  Public OraDynaset As OraDynaset

[オブジェクト生成]
  Set OraSession = CreateObject("OracleInProcServer.XOraSession")
  Set OraDatabase = OraSession.OpenDatabase("TNS", "USER/PASS", ORADB_DEFAULT)
階層ダイアグラム
【OraSession】
    【OraServer】
    【OraDatabase】
        【OraSQLStmt】
        【OraDynaset】
            【OraField】
        【OraParameters】
            【OraParameter】
        【OraParameterArray】
        【OraMetaData】
            【OraMDAttribute】
        【OraAQ】
            【OraAQMsg】
■【OraSession】 Oracleデータベースへの接続を確立するためのインタフェースを提供します。
●OpenDatabase データベースへ接続する
●BeginTrans トランザクションを開始する
●CommitTrans トランザクションをコミットする
●Rollback トランザクションをロールバックする
●LastServerErr エラーコードの取得
●LastServerErrText エラーメッセージの取得
●LastServerErrReset エラーのクリア
■【OraDatabase】 SQL文とPL/SQLコードを実行するためのメソッドを提供します。
●CreateDynaset OraDynasetオブジェクトを作成
●ExecuteSQL SELECT以外のSQL文を実行する
●Close クローズする?
●LastServerErr エラーコードの取得
●LastServerErrText エラーメッセージの取得
●LastServerErrReset エラーのクリア
■【OraDynaset】 SELECT問合せの結果を表します。
●RecordCount レコードの総数の取得
●BOF カレントレコードが最初のレコードの前にあるかどうか
●EOF カレントレコードが最後のレコードの後にあるかどうか
●MoveFirst カーソル位置を最初の行に移動する
●MoveLast カーソル位置を最後の行に移動する
●MoveNext カーソル位置を次の行に移動する
●MovePrevious カーソル位置を前の行に移動する
■【OraFields、OraField】 ダイナセットの行の中にある1つの列またはデータ項目を表します。
●Value フィールドの値を取得
●Count レコードのフィールド数の取得
●Name フィールドのフィールド名の取得
●OraIDataType フィールドのデータ型の取得
●OraMaxDSize フィールドの最大表示サイズの取得
●OraPrecision フィールドの数値列の精度の取得
●OraScale フィールドの数値列の位取りの取得
●OraNullOK フィールドはNULL値を使用できるかどうか
【SQL(SELECT)実行 サンプルリスト】

'***********************************************************************
'  oo4oにてDBに接続して、SELECT文を実行後、データを抽出して、DBを切断する
'***********************************************************************
Private Sub DBSelect()

  On Error GoTo Err_Rtn

  Dim OraSession As OraSession
  Dim OraDatabase As OraDatabase
  Dim OraDynaset As OraDynaset

  Dim result
  Dim strSQL

  strSQL = "SELECT * FROM HINMST WHERE MAKERCODE = '123'"  'SQL文

  Set OraSession = CreateObject("OracleInProcServer.XOraSession")      'oo4oオブジェクト生成
  Set OraDatabase = OraSession.OpenDatabase("hogesvr", "hogeu/hogep", ORADB_DEFAULT)  'DB接続
  Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)  'SQL文実行
  MsgBox OraDynaset.RecordCount & "件のレコードを抽出しました"
  While Not OraDynaset.EOF                                 'レコード数分ループ
    MsgBox OraDynaset.Fields("HINMEI").Value               '品名を取得
    OraDynaset.MoveNext                                    '次のレコードへ
    DoEvents
  Wend
  Set OraDynaset = Nothing                 'オブジェクト開放
  Set OraDatabase = Nothing                'オブジェクト開放
  Set OraSession = Nothing                 'オブジェクト開放
  Exit Sub

'==============
'  エラー処理
'==============
Err_Rtn:

  If (OraSession.LastServerErr <> 0) Then        'OraSession でエラー発生
    MsgBox OraSession.LastServerErrText          'エラー内容の表示
    OraSession.LastServerErrReset                'エラーのクリア
    Set OraSession = Nothing                     'オブジェクト開放

  ElseIf (OraDatabase.LastServerErr <> 0) Then   'OraDatabase でエラー発生
    MsgBox OraDatabase.LastServerErrText         'エラー内容の表示
    OraDatabase.LastServerErrReset               'エラーのクリア
    Set OraDatabase = Nothing                    'オブジェクト開放
    Set OraSession = Nothing                     'オブジェクト開放

  Else
    MsgBox Err.Description                       'エラー内容の表示
    Set OraDynaset = Nothing                     'オブジェクト開放
    Set OraDatabase = Nothing                    'オブジェクト開放
    Set OraSession = Nothing                     'オブジェクト開放
  End If

End Sub
【SQL(INSERT,UPDATE,DELETE)実行 サンプルリスト】

'******************************************************
'  oo4oにてDBに接続して、UPDATE文を実行後、DBを切断する
'******************************************************
Private Sub DBUpdate()

  On Error GoTo Err_Rtn

  Dim OraSession As OraSession
  Dim OraDatabase As OraDatabase
  Dim OraDynaset As OraDynaset

  Dim result
  Dim strSQL

  strSQL = "UPDATE HINMST SET ENDFLG = 1 WHERE MAKERCODE = '123'"  'SQL文

  Set OraSession = CreateObject("OracleInProcServer.XOraSession")  'oo4oオブジェクト生成
  Set OraDatabase = OraSession.OpenDatabase("hogesvr", "hogeu/hogep", ORADB_DEFAULT)  'DB接続
  OraSession.BeginTrans                    'トランザクション開始
  result = OraDatabase.ExecuteSQL(strSQL)  'SQL文実行
  MsgBox result & "レコードを更新しました。"
  OraSession.CommitTrans                   'トランザクションコミット
  Set OraDatabase = Nothing                'オブジェクト開放
  Set OraSession = Nothing                 'オブジェクト開放
  Exit Sub

'==============
'  エラー処理
'==============
Err_Rtn:

  If (OraSession.LastServerErr <> 0) Then        'OraSession でエラー発生
    MsgBox OraSession.LastServerErrText          'エラー内容の表示
    OraSession.LastServerErrReset                'エラーのクリア
    Set OraSession = Nothing                     'オブジェクト開放

  ElseIf (OraDatabase.LastServerErr <> 0) Then   'OraDatabase でエラー発生
    MsgBox OraDatabase.LastServerErrText         'エラー内容の表示
    OraDatabase.LastServerErrReset               'エラーのクリア
    OraSession.Rollback                          'トランザクションロールバック
    Set OraDatabase = Nothing                    'オブジェクト開放
    Set OraSession = Nothing                     'オブジェクト開放

  Else
    MsgBox Err.Description                       'エラー内容の表示
    Set OraDatabase = Nothing                    'オブジェクト開放
    Set OraSession = Nothing                     'オブジェクト開放
  End If

End Sub
●OraSession.OpenDatabaseメソッド

【機能】データベースへのユーザー・セッションを確立します。

【書式】Set OraDatabase = OraSession.OpenDatabase(データベース名, 接続文字列, オプション)

     接続文字列 : ユーザー名とパスワードをスラッシュ(/)で区切って指定します。

オプション :  
ORADB_DEFAULT &H0& Visual Basicモード(デフォルト):
AddNewまたはEditメソッドの使用時に、明示的に設定されていないフィールド(列)の値はNULLに設定されます。 NULL値は、データベースの列値のデフォルトを上書きします。 Edit("SELECT...FOR UPDATE")の使用時に、行のロック解除を待機します。
SQLの非ブロック機能は、使用できなくなります。
ORADB_ORAMODE &H1& Oracleモード:
AddNewメソッドの使用時に、Oracleデータベースにより、デフォルトのフィールド(列)値が設定されます。 挿入または追加操作の後、Oracleのデフォルトの列値はただちにデータベースから再度フェッチされます。
注意: トリガーを使用する場合は、完全なOracleモードを使用してデータを再度フェッチしてください。
ORADB_NOWAIT &H2& ロック非待機モード:
行のロック解除を待機しません。 Editメソッドを使用して他のユーザーまたはプロセスがロックしている行を更新すると、ロック非待機モードでは、ただちにエラー・コードが戻されます。
注意: このオプションは、OraDynasetオブジェクトにのみ適用されます。 OraSQLStmtオブジェクトまたはExecuteSQLコールには影響を与えません。 行がロックされていると、エラーが発生します。
ORADB_NO_REFETCH &H4& Oracleモード(再フェッチなし):
Oracleモードと同様に実行されますが、データはローカル・キャッシュに再フェッチされません。 これによってパフォーマンスが向上します。
注意: データベースの列のデフォルトのために、データベースのデータとローカル・キャッシュが不一致になるため、行を編集せずに挿入する場合にのみ、再フェッチなしモードを使用してください。 このモードで挿入した後に編集しようとすると、「データは変更されています。」(4119)エラーが発生します。
ORADB_NONBLK &H8& 非ブロックモード:
SQL文の実行時は、非ブロック・モードをオンにします。 非ブロック・モードは、ExecuteSQL、CreateDynasetまたはCreateSQLメソッドを使用して処理するSQL文に影響を与えます。
注意: この機能は使用不可になっています。
ORADB_ENLIST_IN_MTS &H10& MTSモードでのリスト:
OraDatabaseオブジェクトをMicrosoft Transaction Server(MTS)モードでリストするかどうかを判断します。
ORADB_ENLIST_FOR_ CALLLBACK &H20& コールバック・モードでのリスト:
イベント通知をオンにします。 フェイルオーバー通知を受信するには、このモードを使用可能にする必要があります。

【 例 】
   Set OraSession = CreateObject("OracleInProcServer.XOraSession")
   Set OraDatabase = OraSession.OpenDatabase("TNS", "USER/PASS", ORADB_DEFAULT)   'DBへ接続
●OraSession.BeginTransメソッド

【機能】指定したセッション内で、データベースのトランザクションを開始します。

【書式】OraSession.BeginTrans

【 例 】
   Set OraSession = CreateObject("OracleInProcServer.XOraSession")
   Set OraDatabase = OraSession.OpenDatabase("TNS", "USER/PASS", ORADB_DEFAULT)
   OraSession.BeginTrans
   result = OraDatabase.ExecuteSQL(strSQL)
   OraSession.CommitTrans

このメソッドのコール後、CommitTransが発行されるまで、データベース・トランザクションはコミットされません。
Rollbackメソッドを使用すると、セッションをロールバックできます。
BeginTransメソッドでトランザクションをすでに開始しているときに、BeginTransを再度使用するとエラーが発生します。
BeginTrans発行後に、グローバル・トランザクション内のダイナセットの所定の行でUpdateまたはDeleteメソッドに失敗すると、UpdateまたはDeleteメソッドをコールした行がロックされたままになります。 CommitTransまたはRollbackメソッドをコールするまで、このロックは解除されません。
●OraSession.CommitTransメソッド

【機能】セッション内に存在する全トランザクションをコミットします。

【書式】OraSession.CommitTrans

【 例 】
   Set OraSession = CreateObject("OracleInProcServer.XOraSession")
   Set OraDatabase = OraSession.OpenDatabase("TNS", "USER/PASS", ORADB_DEFAULT)
   OraSession.BeginTrans
   result = OraDatabase.ExecuteSQL(strSQL)
   OraSession.CommitTrans

※ トランザクションが開始されていないときに、CommitTransを使用するとエラーが発生します。
●OraSession.Rollbackメソッド

【機能】指定したセッション内で保留中の全トランザクションをロールバックします。

【書式】OraSession.Rollback

【 例 】
   Set OraSession = CreateObject("OracleInProcServer.XOraSession")
   Set OraDatabase = OraSession.OpenDatabase("TNS", "USER/PASS", ORADB_DEFAULT)
   OraSession.BeginTrans
   result = OraDatabase.ExecuteSQL(strSQL)
   OraSession.Rollback

※ トランザクションが開始されていないときに、Rollbackを使用するとエラーが発生します。
●OraSession.LastServerErr、OraDatabase.LastServerErrプロパティ

【機能】 OpenDatabase、BeginTrans、CommitTrans、RollbackおよびResetTransメソッドでのエラーなど、接続に関連するすべてのエラーを戻します。
【書式】 result = OraSession.LastServerErr
【機能】 ダイナセットやExecuteSQLメソッドでのエラーなど、Oracleカーソルに関連するすべてのエラーを戻します。
【書式】 result = OraDatabase.LastServerErr

【 例 】
   If (OraSession.LastServerErr <> 0) Then
     MsgBox OraSession.LastServerErrText
     OraSession.LastServerErrReset
   End If

※ Oracle Call Interface(OCI)データベースファンクションから最後に戻された0(ゼロ)以外の戻り値を示します。最後のLastServerErrReset要求以降にエラーが発生していない場合は0(ゼロ)を示します。 効率を上げるために、0(ゼロ)以外の戻り値のみを戻します。したがって、0(ゼロ)以外の値が戻されても、そのエラー生成が、一番最後にコールされたOCIデータベースファンクションによるものとはかぎりません。
●OraSession.LastServerErrText、OraDatabase.LastServerErrTextプロパティ

【機能】現行のLastServerErrプロパティに関連付けられているテキスト・メッセージを戻します。

【書式】result = OraSession.LastServerErrText
【書式】result = OraDatabase.LastServerErrText

【 例 】
   If (OraSession.LastServerErr <> 0) Then
     MsgBox OraSession.LastServerErrText
     OraSession.LastServerErrReset
   End If
●OraSession.LastServerErrReset、OraDatabase.LastServerErrResetメソッド

【機能】指定されたオブジェクトのLastServerErrプロパティを値0(ゼロ)に消去し、LastServerErrTextプロパティをNULLに設定します。

【書式】OraSession.LastServerErrReset
【書式】OraDatabase.LastServerErrReset

【 例 】
   If (OraSession.LastServerErr <> 0) Then
     MsgBox OraSession.LastServerErrText
     OraSession.LastServerErrReset
   End If
●OraDatabase.CreateDynasetメソッド

【機能】指定したSQL SELECT文とオプションから、OraDynasetオブジェクトを作成します。

【書式】Set OraDynaset = OraDatabase.CreateDynaset(SQL文, オプション)

     SQL文 :有効なOracle SQL SELECT文を含んだ文字列。
オプション :  
ORADYN_DEFAULT &H0& デフォルトの動作を受け入れる。
データベースのVisual Basicモードのように動作します。明示的に設定されていないフィールド値はNULLに設定され、データベース列のデフォルトは上書きされます。
データベース・パラメータの自動バインディングを実行します。
データベースから取り出された文字列データから、後続するブランクが削除されます。
更新可能なダイナセットを作成します。
クライアント上でデータをキャッシュします。
ダイナセットの作成時にMoveFirstが強制的に実行されます。
読取りの一貫性を保持します。
ORADYN_NO_AUTOBIND &H1& データベース・パラメータの自動的なバインドを実行しない。
ORADYN_NO_BLANKSTRIP &H2& データベースから取り出された文字列データから、後続するブランクを削除しない。
ORADYN_READONLY &H4& ダイナセットを読取り専用にする。
ORADYN_NOCACHE &H8& ダイナセット用のローカル・データ・キャッシュを作成しない。ローカル・キャッシュがない場合は、ダイナセットの以前の行は使用できません。ただし、データベースからのデータの取出し(移動操作)と行からのデータの取出し(フィールド操作)のパフォーマンスは向上します。 ダイナセットの行を順に取り出すアプリケーションでは、パフォーマンスを向上し、リソースの使用を減らすため、このオプションを使用します。
ORADYN_ORAMODE &H10& データベースのOracleモードと同じように動作するが、作成中のダイナセットにのみ影響を与える。 データベースがOracleモードで作成されている場合、ダイナセットは(互換性を保つために)そのプロパティを継承します。
ORADYN_NO_REFETCH &H20& データベースのORADB_NO_REFETCHモードと同じように動作するが、作成中のダイナセットにのみ影響を与える。 データベースがORADB_NO_REFETCHモードで作成されている場合、ダイナセットは互換性を保つためにそのプロパティを継承します。
ORADYN_NO_MOVEFIRST &H40& ダイナセットの作成時にMoveFirstを強制的に実行しない。 BOFとEOFは両方ともTRUEです。
ORADYN_DIRTY_WRITE &H80& UpdateおよびDeleteメソッドで、読取り一貫性をチェックしない。

【 例 】
   Set OraSession = CreateObject("OracleInProcServer.XOraSession")
   Set OraDatabase = OraSession.OpenDatabase("TNS", "USER/PASS", ORADB_DEFAULT)
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)   'SQL文の実行
   Set OraDynaset = Nothing

単純なビューやシノニムなどの機能を自由に使用できます。 スキーマの参照、列の別名、表の結合、ネストされたSELECT文、およびリモート・データベースの参照機能も使用できます。ただし、どの場合もダイナセットは読取り専用です。
Updateメソッドを実行すると、データベースに対するコミット操作がデフォルトで生成されます。 これを回避するには、CreateDynasetメソッドの使用前に、セッション・オブジェクトにBeginTransメソッドを使用します。
●OraDatabase.ExecuteSQLメソッド

【機能】SELECT以外のSQL文またはPL/SQLブロックを1つ実行して、処理された行数を戻します。

【書式】result = OraDatabase.ExecuteSQL(SQL文)

    SQL文: SELECT以外の有効なOracle SQL文。ブレークのない連続する1行として指定できます。 行をブレークする必要がある場合は、改行(ASCII 10)を使用します。 キャリッジ・リターン(ASCII 13)は、基礎となるOracle Databaseファンクションがヌル終端文字として取り扱うため、使用しないでください。
【 例 】
   Set OraSession = CreateObject("OracleInProcServer.XOraSession")
   Set OraDatabase = OraSession.OpenDatabase("TNS", "USER/PASS", ORADB_DEFAULT)
   OraSession.BeginTrans
   result = OraDatabase.ExecuteSQL(strSQL)   'SQL文の実行
   OraSession.CommitTrans

SQL文を実行すると、データベースに対するコミットがデフォルトで生成されます。 これを回避するには、ExecuteSQLメソッドの使用前に、セッション・オブジェクトにBeginTransメソッドを使用します。
実行するSQL文またはPL/SQLブロックが、現在オープンしているダイナセットに悪影響を与える可能性があるため、不確実な場合は、異なるOraDatabaseオブジェクトを使用してください。
●OraDatabase.Closeメソッド

【機能】このメソッドは何も実行しません。 Visual Basicとの互換性を保つために追加されています。

【書式】OraDatabase.Close

【 例 】Set OraDatabase = Nothing   'OraDatabaseオブジェクトのクローズ
●OraDynaset.RecordCountプロパティ

【機能】ダイナセット内のレコードの総数を戻します。

【書式】result = OraDynaset.RecordCount

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_DEFAULT)
   result = OraDynaset.RecordCount   '該当件数の取得
   Set OraDynaset = Nothing

CreateDynasetメソッドのORADYN_NOCACHEオプションを使用して、このプロパティを参照すると、暗黙的なMoveLast操作が発生し、カレント・レコードがダイナセットの最終レコードになります。
●OraDynaset.BOF、EOFプロパティ

【機能】カレント・レコードが最初のレコードの前にあるかどうか、もしくは、最後のレコードの後にあるかどうかをブール値で返します。

【書式】result = OraDynaset.BOF
【書式】result = OraDynaset.EOF

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   OraDynaset.MoveFirst
   While Not OraDynaset.EOF   'レコードがなくなるまでループ
      strHIN = OraDynaset.Fields("HIN").Value
      OraDynaset.MoveNext
      DoEvents
   Wend
   Set OraDynaset = Nothing

レコードセットが空の場合、BOFとEOFは両方ともTRUEを戻します。
BOFプロパティは、MovePreviousメソッドを使用してダイナセットの最初のレコードより前に移動しようとした場合にTRUEを戻します。
EOFプロパティは、MoveNextメソッドを使用してダイナセットの最後のレコードより後に移動しようとした場合にTRUEを戻します。
●OraDynaset.MoveFirst、MoveLast、MoveNext、MovePreviousメソッド

【機能】カーソルの位置を指定されたダイナセット内の最初、最後、次または前の行に変更します。削除された行はスキップします。

【書式】OraDynaset.MoveFirst
【書式】OraDynaset.MoveLast
【書式】OraDynaset.MoveNext
【書式】OraDynaset.MovePrevious

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   OraDynaset.MoveFirst     '先頭のレコードへ
   While Not OraDynaset.EOF
      strHIN = OraDynaset.Fields("HIN").Value
      OraDynaset.MoveNext   '次のレコードへ
      DoEvents
   Wend
   Set OraDynaset = Nothing

最初のレコードがカレント・レコードの場合にMovePreviousメソッドを使用すると、カレント・レコードがなくなり、BOFがTRUEになります。 MovePreviousメソッドを再度使用するとエラーが発生します。ただし、BOFはTRUEのままです。
最後のレコードがカレント・レコードの場合にMoveNextメソッドを使用すると、カレント・レコードがなくなり、EOFがTRUEになります。 MoveNextメソッドを再度使用するとエラーが発生します。ただし、EOFはTRUEのままです。
●Valueプロパティ

【機能】フィールドの値をVariantとして戻します。

【書式】result = OraDynaset.Fields("HIN").Value

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   OraDynaset.MoveFirst
   While Not OraDynaset.EOF
      strHIN = OraDynaset.Fields("HIN").Value   '品名を取得
      OraDynaset.MoveNext
      DoEvents
   Wend
   Set OraDynaset = Nothing

●Countプロパティ

【機能】レコードのフィールドの数を戻します。

【書式】result = OraDynaset.Fields.Count

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   result = OraDynaset.Fields.Count 'フィールドの数を取得
   Set OraDynaset = Nothing

●Nameプロパティ

【機能】指定フィールドのフィールド名を戻します。

【書式】result = OraDynaset.Fields(i).Name

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   result = OraDynaset.Fields.Count         'フィールドの数を取得
   For i = 0 To result - 1                  'フィールド数分ループ
      Debug.Print OraDynaset.Fields(i).Name 'フィールド名の取得
   Next
   Set OraDynaset = Nothing

●OraIDataTypeプロパティ

【機能】指定フィールドのデータ型のコードを戻します。

【書式】result = OraDynaset.Fields(i).OraIDataType
     
ORATYPE_VARCHAR2 1 VARCHAR2
ORATYPE_NUMBER 2 NUMBER
ORATYPE_LONG 8 LONG
ORATYPE_DATE 12 DATE
ORATYPE_RAW 23 RAW
ORATYPE_LONGRAW 24 LONG RAW
ORATYPE_CHAR 96 CHAR
ORATYPE_BFLOAT 100 BINARY_FLOAT
ORATYPE_BDOUBLE 101 BINARY_DOUBLE
ORATYPE_MLSLABEL 105 MLSLABEL
ORATYPE_OBJECT 108 OBJECT
ORATYPE_REF 110 REF
ORATYPE_CLOB 112 CLOB
ORATYPE_BLOB 113 BLOB
ORATYPE_BFILE 114 BFILE
ORATYPE_TIMESTAMP 187 TIMESTAMP
ORATYPE_TIMESTAMPTZ 188 TIMESTAMP WITH TIME ZONE
ORATYPE_INTERVALYM 189 INTERVAL YEAR TO MONTH
ORATYPE_INTERVALDS 190 INTERVAL DAY TO SECOND
ORATYPE_TIMESTAMPLTZ 232 TIMESTAMPWITHLOCALTIMEZONE
ORATYPE_VARRAY 247 VARRAY
ORATYPE_TABLE 248 NESTED TABLE

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   result = OraDynaset.Fields.Count
   For i = 0 To result - 1
      Debug.Print OraDynaset.Fields(i).OraIDataType 'データ型のコードの取得
   Next
   Set OraDynaset = Nothing

●OraMaxDSizeプロパティ

【機能】指定フィールドの最大表示サイズを戻します。

【書式】result = OraDynaset.Fields(i).OraMaxDSize

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   result = OraDynaset.Fields.Count
   For i = 0 To result - 1
      Debug.Print OraDynaset.Fields(i).OraMaxDSize '最大表示サイズの取得
   Next
   Set OraDynaset = Nothing

※ 戻り値が文字列の場合にのみ意味があります。
●OraPrecisionプロパティ

【機能】指定フィールドの数値列の精度を戻します。

【書式】result = OraDynaset.Fields(i).OraPrecision

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   result = OraDynaset.Fields.Count
   For i = 0 To result - 1
      Debug.Print OraDynaset.Fields(i).OraPrecision '数値列の精度の取得
   Next
   Set OraDynaset = Nothing

※ 戻り値が数値の場合にのみ意味があります。 精度は、数値の桁数です。
●OraScaleプロパティ

【機能】指定フィールドの数値列の位取りを戻します。

【書式】result = OraDynaset.Fields(i).OraScale

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   result = OraDynaset.Fields.Count
   For i = 0 To result - 1
      Debug.Print OraDynaset.Fields(i).OraScale '数値列の位取りの取得
   Next
   Set OraDynaset = Nothing

※ 戻り値が数値の場合にのみ意味があります。SQLのREAL、DOUBLE PRECISION、FLOATおよびFLOAT(N)型では、-127の位取りが戻ります。
●OraNullOKプロパティ

【機能】この列でNULL値を使用できるかどうかを示します。

【書式】result = OraDynaset.Fields(i).OraNullOK

【 例 】
   Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
   result = OraDynaset.Fields.Count
   For i = 0 To result - 1
      Debug.Print OraDynaset.Fields(i).OraNullOK 'NULLを使用できるかどうかを取得
   Next
   Set OraDynaset = Nothing

※ NULL値を使用できる場合はTRUE、それ以外の場合はFALSEを戻します。

目次へ戻ります