テーブル値パラメータを構成する列の記述子フィールド

ここで説明するテーブル値パラメータの記述子フィールドを操作するには、SQLSetDescField、および実装パラメータ記述子 (IPD) のハンドルを指定した SQLSetDescField を使用します。

解説

SQL_DESC_AUTO_UNIQUE_VALUE は、その他の機能と同様にテーブル値パラメータで使用されます。

属性名

説明

SQL_DESC_AUTO_UNIQUE_VALUE

SQLINTEGER

SQL_TRUE はこの列が ID 列であることを示します。

SQL Server はこの情報を使用してパフォーマンスを最適化できますが、アプリケーションでは、この列を ID 列に設定する必要はありません。

アプリケーション パラメータ記述子 (APD) および実装パラメータ記述子 (IPD) のすべてのパラメータの型に追加される属性を次に示します。

属性名

説明

SQL_CA_SS_COLUMN_COMPUTED

SQLSMALLINT

SQL_TRUE はこの列が計算列であることを示します。

SQL Server はこの情報を使用してパフォーマンスを最適化できますが、アプリケーションでは、この列を計算列に設定する必要はありません。

テーブル値パラメータの列以外のバインドでは、この属性は無視されます。

SQL_CA_SS_COLUMN_IN_UNIQUE_KEY

SQLSMALLINT

SQL_TRUE はテーブル値パラメータの列が一意キーに参加することを示します。これにより、クエリのパフォーマンスが向上します。テーブル値パラメータの列以外のバインドでは、この属性は無視されます。

SQL_CA_SS_COLUMN_SORT_ORDER

SQLSMALLINT

テーブル値パラメータの列の並べ替え順を示します。これにより、クエリのパフォーマンスが向上します。テーブル値パラメータの列以外のバインドでは、この属性は無視されます。使用できる値を次に示します。

  • SQL_SS_ASCENDING_ORDER

  • SQL_SS_DESCENDING_ORDER

  • SQL_SS_ORDER_UNSPECIFIED

SQL_SS_ASCENDING_ORDER および SQL_SS_DESCENDING_ORDER 以外の値の場合、"属性の値が正しくありません" というメッセージで SQLSTATE HY024 のエラーが生成され、この値は SQL_SS_ORDER_UNSPECIFIED (この属性の既定値) として扱われます。

SQL_CA_SS_COLUMN_SORT_ORDINAL

SQLSMALLINT

テーブル値パラメータの全体的な順序を定義する列セット内における、テーブル値パラメータ列の序数を示します。これにより、クエリのパフォーマンスが向上します。テーブル値パラメータの列以外のバインドでは、この属性は無視されます。並べ替えの序数は 1 から始まります。値が 0 (既定値) の場合は、テーブル値パラメータの列に列の順序が設定されていないことを示します。

SQL_CA_SS_COLUMN_HAS_DEFAULT_VALUE

SQLSMALLINT

テーブル値パラメータのすべての行にこの列の既定値が設定されるかどうかを示します。テーブル値パラメータの場合、行ごとに既定値を選択できません。値が SQL_FALSE の場合は、行に既定値以外の値が設定されることを示します。これは既定の動作です。値が SQL_TRUE の場合は、この列のすべての行に既定値が設定されることを示します。

SQL_TRUE に設定されている場合、データはサーバーに送信されません。

列の値がサーバー処理で不要な場合、このフィールドは ID 列または計算列でも使用することができます。

これらの属性は、テーブル値パラメータの列に対してのみ有効です。他のパラメータでは無視されます。

テーブル値パラメータの列に SQL_CA_SS_COL_HAS_DEFAULT_VALUE を設定する場合は、その列の SQL_DESC_DATA_PTR が NULL ポインタである必要があります。そうしないと、SQLExecute または SQLExecDirect によって SQL_ERROR が返されます。"パラメータ <p>、列 <c> に対する既定のパラメータの使い方が正しくありません" というメッセージで SQLSTATE=07S01 の診断レコードが生成されます。<p> はパラメータの序数、<c> は列の序数です。