次の方法で共有


テーブル値パラメーター用の ODBC SQL 型

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

テーブル値パラメーターは、新しい ODBC SQL 型である SQL_SS_TABLE でサポートされます。

解説

SQL_SS_TABLEを他の ODBC または SQL Server データ型に変換することはできません。

SQL_SS_TABLEが SQLBindParameter の ValueType パラメーターで C データ型として使用されている場合、またはアプリケーション パラメーター記述子 (APD) レコードにSQL_DESC_TYPEをSQL_SS_TABLEに設定しようとすると、SQL_ERRORが返され、SQLSTATE=HY003 の "アプリケーション バッファーの種類が無効です" という診断レコードが生成されます。

IPD レコードで SQL_DESC_TYPE を SQL_SS_TABLE に設定し、対応するアプリケーション パラメーター記述子レコードが SQL_C_DEFAULT ではない場合、SQL_ERROR が返され、"アプリケーションのバッファー型が無効です" というメッセージで SQLSTATE=HY003 の診断レコードが生成されます。 これは、SQLSetDescField、SQLSetDescRec、または SQLBindParameter の ParameterType で発生する可能性があります。

SQLGetData の呼び出し時に TargetType パラメーターがSQL_SS_TABLEされると、SQL_ERRORが返され、SQLSTATE=HY003 の "アプリケーション バッファーの種類が無効です" という診断レコードが生成されます。

テーブル値パラメーターの列は、SQL_SS_TABLE 型としてバインドできません。 SQLBindParameter ParameterTypeを SQL_SS_TABLE に設定して呼び出すと、SQL_ERRORが返され、SQLSTATE=HY004 の "無効な SQL データ型" で診断レコードが生成されます。 これは、SQLSetDescField と SQLSetDescRec でも発生します。

テーブル値パラメーターの列の値には、パラメーターおよび結果列と同じデータ変換オプションが設定されています。

テーブル値パラメーターは、SQL Server 2008 (10.0.x) 以降でのみ入力パラメーターにすることができます。 SQLBindParameter または SQLSetDescField を使用してSQL_PARAM_INPUT以外の値にSQL_DESC_PARAMETER_TYPEを設定しようとすると、SQL_ERRORが返され、SQLSTATE=HY105 とメッセージ "Invalid parameter type" を含む診断レコードがステートメントに追加されます。

テーブル値パラメーター列では、テーブル値パラメーターでは行ごとの既定値がサポートされていないため、 StrLen_or_IndPtrでSQL_DEFAULT_PARAMを使用することはできません。 代わりに、アプリケーションで列の属性 SQL_CA_SS_COL_HAS_DEFAULT_VALUE を 1 に設定できます。 つまり、この列にすべての行の既定値が含まれます。 StrLen_or_IndPtrが SQL_DEFAULT_PARAM に設定されている場合、SQLExecute または SQLExecDirect はSQL_ERRORを返し、SQLSTATE=HY090 とメッセージ "文字列またはバッファーの長さが無効です" という診断レコードがステートメントに追加されます。

参照

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