テーブル値パラメーター (ODBC)

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

ODBC のテーブル値パラメーターのサポートにより、クライアント アプリケーションは、1 回の呼び出しで複数の行をサーバーに送信することで、パラメーター化されたデータをサーバーに効率的に送信できます。

サーバー上のテーブル値パラメーターの詳細については、「 Table-Valued パラメーターの使用 (データベース エンジン)」を参照してください。

ODBC でテーブル値パラメーターをサーバーに送信するには、次の 2 つの方法があります。

  • すべてのテーブル値パラメーター データは、SQLExecDirect または SQLExecute が呼び出された時点でメモリ内に格納できます。 テーブル値に複数の行がある場合、このデータを配列に格納します。

  • アプリケーションでは、SQLExecDirect または SQLExecute が呼び出されたときに、テーブル値パラメーターの実行時データを指定できます。 この場合、テーブル値のデータの行をバッチ内で指定するか、必要なメモリ量を減らすために 1 つずつ指定することができます。

1 つ目の方法では、より多くのビジネス ロジックをストアド プロシージャにカプセル化できます。 たとえば、発注品目をテーブル値パラメーターとして渡す場合、注文入力のトランザクション全体を 1 つのストアド プロシージャにカプセル化することができます。 サーバーとのやり取りが 1 回で済むため、この方法は非常に効率的です。 また、異なるプロシージャを使用して、注文ヘッダーと発注品目を個別に処理することもできます。この場合、必要なコードが多くなり、クライアントとサーバー間のコントラクトが複雑になります。

2 つ目の方法は、膨大な量のデータを使用する一括操作のときに効率の良いメカニズムです。 この方法では、アプリケーションで最初にデータ行をメモリ内のバッファーに格納しなくても、データ行をサーバーにストリーム送信できます。

テーブル変数を作成するときに、制約と主キーを作成できます。 制約は、テーブル内のデータが特定の要件を満たしていることを確認するのに優れた方法です。

このセクションの内容

ODBC テーブル値パラメーターの使用
テーブル値パラメーターと ODBC の主なユーザー シナリオについて説明します。

テーブル値パラメーター用の ODBC SQL 型
SQL_SS_TABLE 型について説明します。 この型は、テーブル値パラメーターをサポートする新しい ODBC SQL 型です。

テーブル値パラメーターの記述子フィールド
テーブル値パラメーターをサポートする記述子フィールドについて説明します。

テーブル値パラメーターを構成する列の記述子フィールド
テーブル値パラメーターで意味を持つ記述子フィールドについて説明します。

テーブル値パラメーターの診断レコードのフィールド
テーブル値パラメーターをサポートするために診断レコードに追加された 2 つの診断フィールドについて説明します。

テーブル値パラメーターに影響を与えるステートメント属性
テーブル値パラメーター列に対処できるようにする記述子の新しいヘッダー フィールドについて説明します。

テーブル値パラメーターおよび列の値のバインドとデータ転送
パラメーター バインドと、テーブル値パラメーターをサーバーに渡す方法について説明します。

準備されたステートメント用のテーブル値パラメーターのメタデータ
アプリケーションから、準備されたプロシージャ呼び出しのメタデータを取得する方法について説明します。

テーブル値パラメーターの追加メタデータ
SQLProcedureColumns、SQLTables、および SQLColumns を使用して、テーブル値パラメーターのメタデータを取得する方法について説明します。

テーブル値パラメーターのデータ変換およびその他のエラーと警告
テーブル値パラメーターの列値に関するエラーを処理する方法について説明します。

複数バージョン間の互換性
テーブル値パラメーターが、SQL Server 2008 (10.0.x) より前のバージョンのクライアントまたはサーバーによって使用される場合に発生する可能性がある競合について説明します。

ODBC テーブル値パラメーター API の概要
テーブル値パラメーターをサポートする、ODBC 関数の一覧を示します。

参照

SQL Server Native Client (ODBC)
テーブル値パラメーター (SQL Server Native Client)