ヘッダーをスキップ
Oracle® Objects for OLE開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58887-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

CreateCustomDynasetメソッド

説明

カスタム・キャッシュ・パラメータとフェッチ・パラメータを使用して、ダイナセットを作成します。

使用方法

Set oradynaset = oradatabase.CreateCustomDynaset(sql_statement, options, slicesize, perblock, blocks, FetchLimit, FetchSize, SnapShotID)

引数

このメソッドの引数は、次のとおりです。

引数 説明
sql_statement 有効なOracle SQL SELECT文。
slicesize キャッシュ・スライス・サイズ。
perblock ブロック当たりのキャッシュ・スライス。
blocks キャッシュのブロックの最大数。
FetchLimit フェッチ配列のサイズ。
FetchSize フェッチ配列のバッファ・サイズ。
options ダイナセットのオプション状態を示すビット・フラグ。それぞれの値を追加することで1つ以上のオプションを組み合せることができます。定数ORADYN_DEFAULTまたは値&H0&を指定すると、次のデフォルトがダイナセットに指定されます。
  • データベースのVisual Basicモードのように動作します。明示的に設定されていないフィールド値はNULLに設定され、データベース列のデフォルトは上書きされます。

  • データベース・パラメータの自動バインディングを実行します。

  • データベースから取り出された文字列データから、後続するブランクが削除されます。

  • 更新可能なダイナセットを作成します。

  • クライアント上でデータをキャッシュします。

  • ダイナセットの作成時にMoveFirst操作が強制的に実行されます。

  • 読取りの一貫性を保持します。

SnapShotID [オプション] OraDynasetSnapShotプロパティから取得するスナップショットのID。

定数

次の表に、オプション・フラグの定数とその値を示します。

定数 説明
ORADYN_DEFAULT &H0& デフォルトの動作を受け入れる。
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_N_MOVEFIRST &H40& ダイナセットの作成時にMoveFirstを強制的に実行しない。BOFEOFは両方ともTRUEです。
ORADYN_DIRTY_WRITE &H80& UpdateおよびDeleteメソッドで、読取り一貫性をチェックしない。

これらの値は、次の位置にあるoraconst.txtファイルにあります。

ORACLE_BASE\\ORACLE_HOME\rdbms\oo4o

備考

このSQL文はSELECT文である必要があり、そうでない場合はエラーが返されます。簡易ビューやシノニムなどの機能は自由に使用できます。また、スキーマ参照、列の別名、表の結合、ネストしたSELECT文、およびリモート・データベース参照も使用できますが、それぞれの場合において、ダイナセットは読取り専用になります。

"sal + 100"または"abs(sal)"など、複雑な式またはSQLファンクションを列で使用すると、更新可能なダイナセットになりますが、複雑な式に関連付けられている列は更新できません。

通常、オブジェクト名は変更されませんが、場合によっては変更されることがあります。たとえば、列の別名を使用する場合、フィールドを名前で参照するためにその別名を使用する必要があります。複雑な式でスペースを使用する場合、データベースではスペースが削除されるため、スペースなしで列を参照する必要があります。SELECT文ではフィールドは常に番号(序数位置)で参照できます。

SQL SELECT文を実行すると、データベースに対するコミット操作がデフォルトで生成されます。これを回避するには、CreateDynasetメソッドの使用前に、セッション・オブジェクトにBeginTransメソッドを使用します。

結果のダイナセットが更新可能であるかどうかは、Oracle SQLの更新可能性規則、付与されているアクセス権、およびオプション・フラグによって決まります。

更新可能性条件

ダイナセットを更新可能にするためには、次の3つの条件を満たす必要があります。

  • SQL文が、単純な列リストまたは列リスト全体を参照していること(*)。

  • 文でオプション引数の読取り専用フラグを設定しないこと。

  • Oracleで、選択された問合せ行のROWID参照が可能であること。

SQL文はこれらの基準を満たしていない場合でも処理されますが、結果のダイナセットは更新不可になり、ダイナセットのUpdatableプロパティはFALSEを戻します。

このメソッドは、作成されたダイナセットの最初の行に自動的に移動します。

SQLのバインド変数は、OraParametersコレクションと組み合せて使用できます。

この例では、CreateCustomDynasetメソッドを示します。このコードをコピーしてフォームの定義セクションに貼り付けてから、[F5]を押してください。

Sub Form_Load ()
 
 'Declare variables
 Dim OraSession As OraSession 
 Dim OraDatabase As OraDatabase 
 Dim OraDynaset As OraDynaset 
 
 'Create the OraSession Object.
 Set OraSession = CreateObject("OracleInProcServer.XOraSession")
 
 'Create the OraDatabase Object by opening a connection to Oracle.
 Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&) 
 
 'Create the OraDynaset Object using sliceSize as 256,perblock size as 16, no. of 
 'blocks as 20, fetchLimit as 20,FetchSize as 4096
  
 Set OraDynaset = OraDatabase.CreateCustomDynaset("select empno, " & _ 
               "ename from emp", 0&,256,16,20,20,4096)
 
 'Display the first record.
 MsgBox "Employee " & OraDynaset.Fields("empno").value & ", #" & _ 
                OraDynaset.Fields("ename").value
 
End Sub

関連項目:

SnapShotプロパティ