Command オブジェクトは、OLE DB コンシューマー、またはコンシューマーの代わりにサービス プロバイダーによって作成されます。 Command オブジェクトは、DRDA アプリケーション サーバーとして動作するリモート DB2 データベース サーバーで分散リレーショナル データベース アーキテクチャ (DRDA) 固有のコマンドを実行するために使用されます。 Command オブジェクトは、DRDA アプリケーション サーバーを削除するために接続されている場合の構造化照会言語 (SQL) コマンドの実行をサポートします。
コマンドは、テーブルの作成や権限の付与などのデータ定義や、行の更新や削除などのデータ操作に使用されます。 Command オブジェクトを使用したデータ操作の特殊なケースは、DB2 テーブルに基づく行セットの作成です。 DB2 データベース・サーバーでコマンド・テキストを使用する場合、コマンドで指定された表名は、デフォルトで大文字として渡されます。 テーブル名で大文字と小文字が混在する場合は、引用符で囲まれた文字列でテーブル名を渡す必要があります。
コンシューマーは、コマンドを使用する前に、コマンドがサポートされているかどうかを判断する必要があります。 これを行うには、コンシューマーはセッションで IDBCreateCommand の QueryInterface を呼び出します。 このインターフェイスが公開されている場合、プロバイダーはコマンドをサポートします。 コマンドを作成するために、コンシューマーはセッションで IDBCreateCommand::CreateCommand を呼び出します。 1 つのセッションを使用して、複数のコマンドを作成できます。
コマンドが最初に作成されるとき、コマンド テキストは含まれません。 コンシューマーは、 ICommandText::SetCommandText を使用してコマンド テキストを設定します。 テキスト コマンドの構文はプロバイダー固有であるため、コンシューマーは使用する構文のグローバル一意識別子 (GUID) を渡します。 Microsoft OLE DB Provider for DB2で使用する場合、GUID はDBGUID_DBSQL。 OLE DB Provider for DB2 では、この GUID はテキスト コマンドが ANSI SQL のサブセットであることを示します。 プロバイダーが ANSI SQL をサポートするレベルは、DBPROP_SQLSUPPORT プロパティによって指定されます。 このプロパティは、SQL のサポート レベルを指定するビットマスクです。
コマンド テキスト用の OLE DB Provider for DB2 でサポートされる構文は、ANSI SQL 92 Entry-Level と同じになります (ただし、DB2 サーバーのプラットフォームとバージョンに基づく一部の例外があります)。
有効な SQL コマンドについては、IBM が発行する以下の資料に記載されています。
DB2 for z/OS SQL リファレンス バージョン 9
DB2 for z/OS SQL リファレンス バージョン 8
DB2 for IBM i SQL リファレンス バージョン 6 リリース 1
DB2 for IBM i SQL リファレンス バージョン 5 リリース 4
DB2 for LUW SQL リファレンス バージョン 9
コマンドを実行するために、コンシューマーは ICommand::Execute を呼び出します。 コマンド テキストで行セットを開くコマンドが指定されている場合、 Execute は 行セットをインスタンス化し、その行セットへのインターフェイス ポインターを返します。
Command オブジェクトの次のインターフェイスは、OLE DB Provider for DB2 の現在のバージョンでサポートされています。
IAccessor
IColumnsInfo
ICommand
ICommandPrepare
ICommandProperties
ICommandText
ICommandWithParameters
IConvertType
ISupportErrorInfo
ICommand オブジェクトを使用する場合、DB2 のプラットフォームとバージョンによっては、Microsoft OLE DB Provider for DB2データ ストアからパラメーター型情報を派生させられない場合があります。 OLE DB クライアント アプリケーションは、 ICommandWithParameters::SetParameterInfo 関数を使用して、ネイティブ パラメーターの型情報を提供できます。 OLE DB プロバイダーは 、SetParameterInfo で指定された型情報を使用して、コンシューマーによって提供される型 (バインド構造の wType 値で示される) からデータ ストアで使用されるネイティブ型にパラメーター データを変換する方法を決定します。 コンシューマーが既知の有効桁数、小数点以下桁数、およびサイズ値を持つデータ型を指定する場合、有効桁数、小数点以下桁数、またはサイズに関してコンシューマーから提供された情報は、OLE DB Provider for DB2 によって無視されます。
コンシューマーが提供する情報は正しく、すべてのパラメーターに対して指定する必要があります。 OLE DB Provider for DB2 では、DB2 のプラットフォームとバージョンに応じて、指定された情報がパラメーター メタデータに対して検証される場合がありますが、OLE DB プロバイダーは常に、指定された値がプロバイダーの有効な値であると判断します。 コンシューマーが提供する情報は正しく、すべてのパラメーターに対して指定する必要があります。 OLE DB Provider for DB2 では、指定された情報をパラメーター メタデータに対して検証できませんが、OLE DB プロバイダーは、指定された値がプロバイダーの有効な値であると判断できます。 正しくないパラメーター情報を使用してコマンドを実行した結果、または間違った数のパラメーター情報を渡した結果は未定義です。 たとえば、パラメーターの型が LONG で、コンシューマーが ICommandWithParameters::SetParameterInfo でDBTYPE_STRの型インジケーターを指定する場合、OLE DB Provider for DB2 はデータをデータ ストアに送信する前に文字列に変換します。 データ ストアは LONG を想定していないため、エラーが発生する可能性があります。