プログラム変数へのデータの移動

データベース API を使用して SQL Server データベースにアクセスするアプリケーションでは、アプリケーション変数と次の項目との間でデータを移動する必要があります。

  • 結果セット列

    結果セット内のフェッチした行の列からアプリケーション変数にデータを移動する必要があります。

  • リターン コード

    ストアド プロシージャのリターン コードからアプリケーション変数にデータを移動する必要があります。

  • パラメータ

    ストアド プロシージャのパラメータとアプリケーション変数間でデータを移動する必要があります。パラメータは、入力パラメータにも出力パラメータにもできます。したがって、変数からパラメータ、またはパラメータから変数のいずれへもデータを移動できます。

  • パラメータ マーカー

    SQL ステートメントでは、WHERE 句検索条件内などの入力式やストアド プロシージャのパラメータとリターン コードの代わりに、ODBC パラメータ マーカーと OLE DB パラメータ マーカーが使用されます。アプリケーションはアプリケーション変数とパラメータ マーカーで置換された式からデータを移動する必要があります。詳細については、「パラメータ マーカー (データベース エンジン)」を参照してください。

バインド

多くのデータベース API ではバインドの概念を使用して、アプリケーション変数と SQL Server オブジェクト間でのデータの移動方法を指定します。データベース API では、次のことを実行するために、アプリケーションから呼び出せる関数が用意されています。

  • 結果セット列、リターン コード、パラメータ、またはパラメータ マーカーのデータ型、サイズ、有効桁数、小数点以下桁数を判断します。この情報を受け取ったアプリケーションは、互換性のある属性を持つ変数または配列変数を割り当てることができます。

  • 結果セット列、リターン コード、パラメータ、またはパラメータ マーカーを個別の変数または配列変数にバインドします。通常、バインド情報には次の情報が含まれます。

    • 変数のアドレスと属性 (データ型、サイズ、有効桁数、および小数点以下桁数)

    • データベース オブジェクトの名前と属性

通常、次のいずれかの操作が行われたときにデータが移動されます。

  • Transact-SQL ステートメントまたはバッチが実行されたとき。

    OLE DB プロバイダまたは ODBC ドライバは、入力パラメータやパラメータ マーカーにバインドされたデータを取り込み、SQL Server のインスタンスに送信するパケットにそのデータを含めます。

  • 結果セット行がフェッチされたとき。

    OLE DB プロバイダまたは ODBC ドライバは、各列のデータをバインドされた変数に移動します。

  • ストアド プロシージャから結果セットがすべてフェッチされるか、取り消されたとき。

    OLE DB プロバイダまたは ODBC ドライバは、出力パラメータやリターン コードのデータをバインドされた変数に移動します。

バインドされたアプリケーション変数は、バインド先の SQL Server オブジェクトと同じデータ型でなくてもかまいません。データ型が異なる場合は、データを移動するときに、OLE DB プロバイダまたは ODBC ドライバによってデータ型が変換されます。OLE DB プロバイダまたは ODBC ドライバがサポートする変換セットについては、プロバイダまたはドライバのマニュアルを参照してください。