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

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 型としてバインドできません。 ParameterType を SQL_SS_TABLE に設定して SQLBindParameter を呼び出すと、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)