DB-Library 一括コピー プログラムを ODBC に変換するのは簡単です。SQL Server Native Client ODBC ドライバーでサポートされる一括コピー関数は、DB-Library 一括コピー関数に似ていますが、次の例外があります。
DB-Library アプリケーションは、一括コピー関数の最初のパラメーターとして DBPROCESS 構造体へのポインターを渡します。 ODBC アプリケーションでは、DBPROCESS ポインターは ODBC 接続ハンドルに置き換えられます。
DB-Library アプリケーションは、接続する前に BCP_SETL を呼び出して、DBPROCESS に対する一括コピー操作を有効にします。 ODBC アプリケーションでは、接続する前に SQLSetConnectAttr を呼び出して、接続ハンドルに対する一括操作を有効にします。
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (void *)SQL_BCP_ON, SQL_IS_INTEGER);SQL Server Native Client ODBC ドライバーは、DB-Library メッセージ ハンドラーとエラー ハンドラーをサポートしていません。ODBC 一括コピー関数によって発生したエラーとメッセージを取得するには、 SQLGetDiagRec を呼び出す必要があります。 ODBC バージョンの一括コピー関数は、SQL_SUCCESSやSQL_ERRORなどの ODBC スタイルのリターン コードではなく、SUCCEED または FAILED の標準の一括コピー リターン コードを返します。
DB-Library bcp_bindvarlen パラメーターに指定された値は、ODBC bcp_bindcbData パラメーターとは異なる方法で解釈されます。
指定された条件 varlen 値の DB-Library ODBC cbData 値 Null 値が指定されました 0 -1 (SQL_NULL_DATA) 指定された変数データ -1 -10 (SQL_VARLEN_DATA) 長さ 0 の文字またはバイナリ文字列 NA 0 DB ライブラリでは、-1 の varlen 値は、可変長データが提供されていることを示します。ODBC cbData では、NULL 値のみが指定されていることを意味すると解釈されます。 -1 の DB-Library varlen 仕様を SQL_VARLEN_DATA に、 varlen の仕様を 0 から SQL_NULL_DATA に変更します。
DB-Library bcp_colfmt file_collenと ODBC bcp_colfmtcbUserData には、前述の bcp_bindvarlen パラメーターと cbData パラメーターと同じ問題があります。 -1 の DB-Library file_collen 仕様をSQL_VARLEN_DATAに変更し、 file_collen の仕様を 0 から SQL_NULL_DATA に変更します。
ODBC bcp_control関数の iValue パラメーターは void ポインターです。 DB-Library では、 iValue は整数でした。 ODBC iValue の値を void * にキャストします。
bcp_control オプション BCPMAXERRS は、一括コピー操作が失敗するまでにエラーが発生する可能性がある個々の行の数を指定します。 BCPMAXERRS の既定値は、bcp_controlの DB-Library バージョンでは 0 ( 最初のエラー では失敗)、ODBC バージョンでは 10 です。 既定の 0 に依存して一括コピー操作を終了するアプリケーション DB-Library は、ODBC bcp_control を呼び出して BCPMAXERRS を 0 に設定するように変更する必要があります。
ODBC bcp_control 関数は、DB-Library バージョンのbcp_controlでサポートされていない次のオプション をサポートしています。
BCPODBC
TRUE に設定すると、文字形式で保存された datetime 値と smalldatetime 値に ODBC タイムスタンプ エスケープ シーケンス プレフィックスとサフィックスを指定します。 これは、BCP_OUT操作にのみ適用されます。
BCPODBC を FALSE に設定すると、文字列に変換された datetime 値が次のように出力されます。
1997-01-01 00:00:00.000BCPODBC を TRUE に設定すると、次と同じ datetime 値が出力されます。
{ts '1997-01-01 00:00:00.000' }BCPKEEPIDENTITY
TRUE に設定すると、一括コピー関数が、ID 制約を持つ列に指定されたデータ値を挿入するように指定します。 これが設定されていない場合は、挿入された行に対して新しい ID 値が生成されます。
BCPHINTS
さまざまな一括コピーの最適化を指定します。 このオプションは、6.5 以前のバージョンの SQL Server では使用できません。
BCPFILECP
一括コピー ファイルのコード ページを指定します。
BCPUNICODEFILE
文字モードの一括コピー ファイルが Unicode ファイルであることを指定します。
ODBC bcp_colfmt 関数は、ODBC SQLCHAR typedef と競合するため、SQLCHAR の file_type インジケーターをサポートしていません。 bcp_colfmtの代わりに SQLCHARACTER を使用してください。
ODBC バージョンの一括コピー関数では、文字列で datetime 値と smalldatetime 値を操作するための形式は、yyyy-mm-dd hh:mm:ss.sss の ODBC 形式です。 smalldatetime 値は、yyyy-mm-dd hh:mm:ss の ODBC 形式を使用します。
一括コピー関数の DB-Library バージョンでは、複数の形式を使用して、文字列内の datetime 値と smalldatetime 値を受け入れます。
既定の形式は mmm dd yyyy hh:mmxx です。 xx は AM または PM です。
DB-Library dbconvert 関数でサポートされている任意の形式の datetime および smalldatetime 文字列。
SQL Server クライアント ネットワーク ユーティリティの [DB-Library オプション] タブで [国際設定を使用する] チェック ボックスをオンにすると、DB-Library 一括コピー関数は、クライアント コンピューター レジストリのロケール設定に定義されている地域の日付形式の日付も受け入れます。
DB-Library 一括コピー関数は、ODBC の datetime 形式と smalldatetime 形式を 受け入れません。
SQL_SOPT_SS_REGIONALIZE ステートメント属性が SQL_RE_ON に設定されている場合、ODBC 一括コピー関数は、クライアント コンピューター レジストリのロケール設定に対して定義された地域の日付形式で日付を受け入れます。
MONEY 値を 文字形式で出力する場合、ODBC 一括コピー関数は 4 桁の有効桁数を提供し、コンマ区切り記号は指定しません。DB-Library バージョンでは、有効桁数が 2 桁しか指定されておらず、コンマ区切り記号が含まれます。