IRowsetFastLoad::InsertRow (OLE DB)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

OLE DB ドライバーのダウンロード

一括コピー行セットに行を追加します。 サンプルについては、「IRowsetFastLoad を使用したデータの一括コピー (OLE DB)」と「IROWSETFASTLOAD と ISEQUENTIALSTREAM を使用した SQL SERVER への BLOB データの送信 (OLE DB)」を参照してください。

構文

  
HRESULT InsertRow(  
      HACCESSOR hAccessor,  
      void* pData);  

引数

hAccessor[in]
一括コピーの行データを定義するアクセサーのハンドルを指定します。 参照されるアクセサーは行アクセサーで、データ値を保持するコンシューマー所有のメモリをバインドします。

pData[in]
データ値を保持するコンシューマー所有のメモリへのポインターを指定します。 詳細については、「DBBINDING 構造体」を参照してください。

リターン コードの値

S_OK
メソッドが成功しました。 すべての列のバインド状態値は、DBSTATUS_S_OK または DBSTATUS_S_NULL です。

E_FAIL
エラーが発生しました。 エラー情報は、行セットのエラー インターフェイスから参照できます。

E_INVALIDARG
pData 引数に NULL ポインターが設定されました。

E_OUTOFMEMORY
MSOLEDBSQL では、要求を完了するのに必要なメモリを割り当てることができませんでした。

E_UNEXPECTED
既に IRowsetFastLoad::Commit メソッドによって無効になっている一括コピー行セットに対して呼び出されました。

DB_E_BADACCESSORHANDLE
コンシューマーが指定した hAccessor 引数が無効でした。

DB_E_BADACCESSORTYPE
指定されたアクセサーが行アクセサーではなかったか、コンシューマー所有のメモリが指定されませんでした。

解説

コンシューマー データを列の SQL Server データ型に変換するときにエラーが発生すると、OLE DB Driver for SQL Server プロバイダーから E_FAIL が返されます。 InsertRow メソッドを使用するか、Commit メソッドのみを使用して、データを SQL Server に転送できます。 InsertRow メソッドを使用する場合、コンシューマー アプリケーションは、データ型変換エラーの通知を受け取るまで、誤ったデータを使用してこのメソッドを何回も呼び出す可能性があります。 Commit メソッドでは、すべてのデータがコンシューマーにより正しく指定されたことが保証されるので、コンシューマーは適切に Commit を使用することで、必要に応じてデータを検証できます。

OLE DB Driver for SQL Server の一括コピー行セットは書き込み専用です。 OLE DB Driver for SQL Server では、コンシューマーから行セットをクエリできるメソッドは公開していません。 処理を終了する場合、コンシューマーは Commit メソッドを呼び出さずに、IRowsetFastLoad インターフェイスの参照を解放できます。 コンシューマーが行セットに挿入した行にアクセスして値を変更する機能や、そのような行を行セットから個別に削除する機能はありません。

一括コピーされる行は、サーバー上で SQL Server 用に形式が設定されます。 行の形式は、ANSI_PADDING など、接続やセッションに設定されたオプションの影響を受けます。 このオプションは、OLE DB Driver for SQL Server により確立された接続に対して既定で設定されます。

参照

IRowsetFastLoad (OLE DB)