テーブル値パラメーターの記述子フィールドTable-Valued Parameter Descriptor Fields

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

テーブル値パラメーターのサポートには、ODBC アプリケーション パラメーター記述子 (APD) および実装パラメーター記述子 (IPD) の新しい SQL ServerSQL Server 固有のフィールドが含まれます。Support for table-valued parameters includes new SQL ServerSQL Server-specific fields in ODBC application parameter descriptors (APDs) and implementation parameter descriptors (IPDs).

コメントRemarks

名前Name LocationLocation 種類Type 説明Description
SQL_CA_SS_TYPE_NAMESQL_CA_SS_TYPE_NAME IPDIPD SQLTCHAR*SQLTCHAR* テーブル値パラメーターのサーバーの型名です。The server type name of the table-valued parameter.

SQLBindParameter への呼び出しで、テーブル値パラメーターの型名を指定すると、ANSI アプリケーションとしてビルドされているアプリケーションも Unicode 値として常に指定する必要があります。When a table-valued parameter type name is specified on a call to SQLBindParameter, it must always be specified as a Unicode value, even in applications that are built as ANSI applications. パラメーターに使用される値StrLen_or_IndPtr SQL_NTS または sizeof (wchar) を掛けた値名の文字列の長さのいずれかにする必要があります。The value used for the parameter StrLen_or_IndPtr should be either SQL_NTS or the string length of the name multiplied by sizeof(WCHAR).

テーブル値パラメーターの型名を指定した場合、SQLSetDescField を使用して、アプリケーションに準拠する方法は、リテラルを使用して指定できますが構築されています。When a table-valued parameter type name is specified via SQLSetDescField, it can be specified by using a literal that conforms to the way the application is built. ODBC ドライバー マネージャーで、必要な Unicode 変換を実行します。The ODBC Driver Manager will perform any required Unicode conversion.
SQL_CA_SS_TYPE_CATALOG_NAME (読み取り専用)SQL_CA_SS_TYPE_CATALOG_NAME (read only) IPDIPD SQLTCHAR*SQLTCHAR* 型が定義されているカタログです。The catalog where the type is defined.
SQL_CA_SS_TYPE_SCHEMA_NAMESQL_CA_SS_TYPE_SCHEMA_NAME IPDIPD SQLTCHAR*SQLTCHAR* 型が定義されているスキーマです。The schema where the type is defined.

アプリケーションでは、テーブル値パラメーターの SQL_CA_SS_TYPE_CATALOG_NAME を設定できません。Applications must not set SQL_CA_SS_TYPE_CATALOG_NAME for table-valued parameters. これを設定すると、SQL_ERROR が返され、"記述子フィールドの識別子が正しくありません" というメッセージで SQLSTATE = HY091 の診断レコードが記録されます。Doing so will return a SQL_ERROR and log a diagnostic record with SQLSTATE = HY091 and the message "Invalid descriptor field identifier".

次のステートメント属性および記述子のヘッダー フィールドは、テーブル値パラメーターにフォーカスが設定されている場合に適用されます。The following statement attributes and descriptor header fields apply to table-valued parameters when the parameter focus is set to a table-valued parameter:

名前Name LocationLocation 種類Type 説明Description
SQL_ATTR_PARAMSET_SIZESQL_ATTR_PARAMSET_SIZE

(APD の SQL_DESC_ARRAY_SIZE に相当)(This is equivalent to SQL_DESC_ARRAY_SIZE in the APD.)
APDAPD SQLUINTEGERSQLUINTEGER テーブル値パラメーターのバッファー配列のサイズです。The array size of the buffer arrays for a table-valued parameter. これは、バッファーが保持できる最大行数、または行内のバッファーのサイズです。テーブル値パラメーターの値自体には、バッファーで保持できるよりも多い (または少ない) 行が含まれる場合があります。This is the maximum number of rows the buffers will accommodate or the size of the buffers in rows; the table-valued parameter value itself might have more or fewer rows than the buffers can hold. 既定値は 1 です。Default is 1.

注:SQL_SOPT_SS_PARAM_FOCUS が 0 の既定値に設定されている場合 SQL_ATTR_PARAMSET_SIZE はステートメントを参照し、パラメーター セットの数を指定します。Note: If SQL_SOPT_SS_PARAM_FOCUS is set to its default value of 0, SQL_ATTR_PARAMSET_SIZE refers to the statement and specifies the number of parameter sets. SQL_SOPT_SS_PARAM_FOCUS がテーブル値パラメーターの序数に設定されている場合は、テーブル値パラメーターを参照し、テーブル値パラメーターのパラメーター セットごとの行数を指定します。If SQL_SOPT_SS_PARAM_FOCUS is set to the ordinal of a table-valued parameter, it refers to the table-valued parameter and specifies the number of rows per parameter set for the table-valued parameter.
SQL_ATTR_PARAM _BIND_TYPESQL_ATTR_PARAM _BIND_TYPE APDAPD SQLINTEGERSQLINTEGER 既定値は SQL_PARAM_BIND_BY_COLUMN です。The default is SQL_PARAM_BIND_BY_COLUMN.

行方向のバインドを選択するには、このフィールドに、構造体の長さ、または一連のテーブル値パラメーターの行のバインドされるバッファーのインスタンスの長さが設定されます。To select row-wise binding, this field is set to the length of the structure or an instance of a buffer that will be bound to a set of table-valued parameter rows. この長さには、バインドされたすべての列の領域と、構造体またはバッファーの埋め込みを含める必要があります。This length must include space for all of the bound columns and any padding of the structure or buffer. これにより、バインドされた列のアドレスが指定の長さでインクリメントされると、結果は、次の行の同じ列の先頭を指すようになります。This ensures that when the address of a bound column is incremented with the specified length, the result will point to the beginning of the same column in the next row. 使用する場合、 sizeof ANSI c 演算子は、この動作が保証されます。When using the sizeof operator in ANSI C, this behavior is guaranteed.
SQL_ATTR_PARAM_BIND_OFFSET_PTRSQL_ATTR_PARAM_BIND_OFFSET_PTR APDAPD SQLINTEGER*SQLINTEGER* 既定値は NULL ポインターです。The default is a null pointer.

このフィールドが NULL 以外の場合、ドライバーはポインターを逆参照し、逆参照された値を記述子レコードの遅延された各フィールド (SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、および SQL_DESC_OCTET_LENGTH_PTR) に追加して、新しいポインター値を使用してデータ値にアクセスします。If this field is non-null, the driver dereferences the pointer, adds the dereferenced value to each of the deferred fields in the descriptor record (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, and SQL_DESC_OCTET_LENGTH_PTR), and uses the new pointer values to access data values.

これらのフィールドは、テーブル値パラメーターでのみ有効です。それ以外のデータ型の場合は無視されます。These fields are only valid with table-valued parameters, and are ignored for other data types.

ストアド プロシージャを呼び出す場合、SQL_CA_SS_TYPE_NAME は省略可能です。SQL_CA_SS_TYPE_NAME is optional for stored procedure calls. サーバー側でテーブル値パラメーターの型を特定できるようなプロシージャの呼び出しでない場合は、SQL ステートメントで SQL_CA_SS_TYPE_NAME を指定する必要があります。It must be specified for SQL statements that are not procedure calls to enable the server to determine the type of the table-valued parameter.

型名が必要で、テーブル値パラメーターのテーブル型がストアド プロシージャとは異なるスキーマで定義されている場合、SQL_CA_SS_TYPE_SCHEMA_NAME を実装パラメーター記述子 (IPD) で指定する必要があります。If the type name is reqired and the table type for the table-valued parameter is defined in a different schema than the stored procedure, SQL_CA_SS_TYPE_SCHEMA_NAME must be specified in the implementation parameter descriptor (IPD). 指定しないと、サーバーでテーブル値パラメーターの型を特定できません。If not, the server will not be able to determine the type of the table-valued parameter. これは、エラーが発生、SQLExecute または SQLExecDirect を呼び出すとします。This will result in an error when you call SQLExecute or SQLExecDirect. エラーは SQLSTATE= 07006 で、メッセージは "データ型の属性に関する制限に違反しました" になります。The error will have SQLSTATE= 07006 and the message "Restricted data type attribute violation".

テーブル値パラメーターの列では、行方向のバインドまたは列方向のバインドを使用できます。Table-valued parameter columns can use either row-wise or column-wise binding. 既定では、列方向のバインドが使用されます。The default is column-wise binding. 行方向のバインドは、SQL_ATTR_PARAM_BIND_TYPE および SQL_ATTR_ PARAM_BIND_OFFSET_PTR を設定することで指定できます。Row-wise binding can be specified by setting SQL_ATTR_PARAM_BIND_TYPE and SQL_ATTR_ PARAM_BIND_OFFSET_PTR. これは、列およびパラメーターの行方向のバインドと似ています。This is analogous to row-wise binding of columns and parameters.

SQL_CA_SS_TYPE_CATALOG_NAME および SQL_CA_SS_TYPE_SCHEMA_NAME を使用すると、CLR ユーザー定義型パラメーターに関連付けられたカタログとスキーマも取得できます。SQL_CA_SS_TYPE_CATALOG_NAME and SQL_CA_SS_TYPE_SCHEMA_NAME can also be used to retrieve the catalog and schema associated with CLR user-defined type parameters. これらは、CLR ユーザー定義型の既存の型固有のカタログ スキーマの属性の代わりに使用します。These are alternatives to the existing type specific catalog schema attributes for these types.

関連項目See Also

テーブル値パラメーター (ODBC)Table-Valued Parameters (ODBC)