Home > VB6 お品書き
VB6 リファレンス お品書き へ戻ります
Visual Basic6 リファレンス


VB6 オラクル oo4o 操作
Oracle データベースへの接続・操作についてのリファレンス。

Oracle Objects for OLEインプロセス・オートメーション・サーバー
OO4Oインプロセス・オートメーション・サーバーは、Oracleデータベースへの接続、SQL文やPL/SQLブロックの実行、および結果へのアクセスのための一連のCOMオートメーション・オブジェクトです。

※Oracleへ接続するためには ODAC(Instant Client)のインストールが必要です ODAC ダウンロード

[参照設定]
  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)
  ※ 上位バージョンは下位バージョンをサポートしていません。

[変数宣言]
  Dim OraSession As OraSession
  Dim OraDatabase As OraDatabase
  Dim 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

お品書き
サンプル プログラム
● サンプル (SELECT)oo4oにてDBに接続して、SELECT文を実行後、データを抽出して、DBを切断する サンプル プログラム
● サンプル (INSERT,UPDATE,DELETE)oo4oにてDBに接続して、UPDATE文を実行後、DBを切断する サンプル プログラム
OraSessionOracleデータベースへの接続を確立するためのインタフェースを提供します。
● OpenDatabaseデータベースへ接続する
● BeginTransトランザクションを開始する
● CommitTransトランザクションをコミットする
● Rollbackトランザクションをロールバックする
● LastServerErrエラーコードの取得
● LastServerErrTextエラーメッセージの取得
● LastServerErrResetエラーのクリア
OraDatabaseSQL文とPL/SQLコードを実行するためのメソッドを提供します。
● CreateDynasetOraDynasetオブジェクトを作成
● ExecuteSQLSELECT以外のSQL文を実行する
● Closeクローズする?
● LastServerErrエラーコードの取得
● LastServerErrTextエラーメッセージの取得
● LastServerErrResetエラーのクリア
OraDynasetSELECT問合せの結果を表します。
● RecordCountレコードの総数の取得
● BOFカレントレコードが最初のレコードの前にあるかどうか
● EOFカレントレコードが最後のレコードの後にあるかどうか
● MoveFirstカーソル位置を最初の行に移動する
● MoveLastカーソル位置を最後の行に移動する
● MoveNextカーソル位置を次の行に移動する
● MovePreviousカーソル位置を前の行に移動する
OraFields、OraFieldダイナセットの行の中にある1つの列またはデータ項目を表します。
● Valueフィールドの値を取得
● Countレコードのフィールド数の取得
● Nameフィールドのフィールド名の取得
● OraIDataTypeフィールドのデータ型の取得
● OraMaxDSizeフィールドの最大表示サイズの取得
● OraPrecisionフィールドの数値列の精度の取得
● OraScaleフィールドの数値列の位取りの取得
● OraNullOKフィールドはNULL値を使用できるかどうか


● 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 strSQL

  Set OraSession = CreateObject("OracleInProcServer.XOraSession")      'oo4oオブジェクト生成
  Set OraDatabase = OraSession.OpenDatabase("hogetns", "hogeu/hogep", ORADB_DEFAULT)  'DB接続

  strSQL = "SELECT * FROM HINMST WHERE MAKERCODE = '123'"  'SQL文
  Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)  'SQL文実行

  MsgBox OraDynaset.RecordCount & "件のレコードを抽出しました"

  While Not OraDynaset.EOF                                 'レコード数分ループ
    Debug.Print 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


● 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

  Set OraSession = CreateObject("OracleInProcServer.XOraSession")  'oo4oオブジェクト生成
  Set OraDatabase = OraSession.OpenDatabase("hogetns", "hogeu/hogep", ORADB_DEFAULT)  'DB接続

  OraSession.BeginTrans                     'トランザクション開始
  strSQL = "UPDATE HINMST SET ENDFLG = 1 WHERE MAKERCODE = '123'"  'SQL文
  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(データベース名, 接続文字列, オプション)

データベース名TNS名
接続文字列ユーザー名とパスワードをスラッシュ(/)で区切って指定します。
オプション
オプション数値説明
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メソッドでのエラーなど、接続に関連するすべてのエラーを戻します。
【書式】OraSession.LastServerErr

【機能】ダイナセットやExecuteSQLメソッドでのエラーなど、Oracleカーソルに関連するすべてのエラーを戻します。
【書式】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プロパティに関連付けられているテキスト・メッセージを戻します。
【書式】
【書式】
OraSession.LastServerErrText
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
【 例 】 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 プロパティ
● OraDynaset.EOF プロパティ


【機能】カレント・レコードが最初のレコードの前にあるかどうかをブール値で返します。
【書式】result = OraDynaset.BOF

【機能】カレント・レコードが最後のレコードの後にあるかどうかをブール値で返します。
【書式】result = OraDynaset.EOF

【 例 】 Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
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 メソッド
● OraDynaset.MoveLastメソッド
● OraDynaset.MoveNextメソッド
● OraDynaset.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("fieldName").Value
【 例 】 Set OraDynaset = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY)
While Not OraDynaset.EOF
    strHIN = OraDynaset.Fields("HINMEI").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

result数値
ORATYPE_VARCHAR21VARCHAR2
ORATYPE_NUMBER2NUMBER
ORATYPE_LONG8LONG
ORATYPE_DATE12DATE
ORATYPE_RAW23RAW
ORATYPE_LONGRAW24LONG RAW
ORATYPE_CHAR96CHAR
ORATYPE_BFLOAT100BINARY_FLOAT
ORATYPE_BDOUBLE101BINARY_DOUBLE
ORATYPE_MLSLABEL105MLSLABEL
ORATYPE_OBJECT108OBJECT
ORATYPE_REF110REF
ORATYPE_CLOB112CLOB
ORATYPE_BLOB113BLOB
ORATYPE_BFILE114BFILE
ORATYPE_TIMESTAMP187TIMESTAMP
ORATYPE_TIMESTAMPTZ188TIMESTAMP WITH TIME ZONE
ORATYPE_INTERVALYM189INTERVAL YEAR TO MONTH
ORATYPE_INTERVALDS190INTERVAL DAY TO SECOND
ORATYPE_TIMESTAMPLTZ232TIMESTAMPWITHLOCALTIMEZONE
ORATYPE_VARRAY247VARRAY
ORATYPE_TABLE248NESTED 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を戻します。

 
VB6 リファレンス お品書き へ戻ります
▲TOP