Share via


ODBC-SQL-Typ für Tabellenwertparameter

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Unterstützung für Tabellenwertparameter wird von einem neuen ODBC-SQL-Typ, SQL_SS_TABLE, bereitgestellt.

Bemerkungen

SQL_SS_TABLE können nicht in einen anderen ODBC- oder SQL Server-Datentyp konvertiert werden.

Wenn SQL_SS_TABLE als C-Datentyp im ValueType-Parameter von SQLBindParameter verwendet wird oder versucht wird, SQL_DESC_TYPE in einem APD-Eintrag (Application Parameter Descriptor) auf SQL_SS_TABLE festzulegen, wird SQL_ERROR zurückgegeben und ein Diagnosedatensatz mit SQLSTATE=HY003, "Ungültiger Anwendungspuffertyp", generiert.

Wenn SQL_DESC_TYPE in einem IPD-Datensatz auf SQL_SS_TABLE festgelegt wird, und der entsprechende Anwendungsparameterdeskriptor-Datensatz nicht SQL_C_DEFAULT ist, wird SQL_ERROR zurückgegeben, und ein Diagnosedatensatz mit der Meldung SQLSTATE=HY003, "Ungültiger Anwendungspuffertyp" wird generiert. Dies kann mit dem ParameterType eines SQLSetDescField-, SQLSetDescRec- oder SQLBindParameter-Objekts auftreten.

Wenn der TargetType-Parameter beim Aufrufen von SQLGetData SQL_SS_TABLE wird, wird SQL_ERROR zurückgegeben und ein Diagnosedatensatz mit SQLSTATE=HY003 generiert, "Ungültiger Anwendungspuffertyp".

Eine Tabellenwertparameter-Spalte kann nicht als SQL_SS_TABLE-Datentyp gebunden werden. Wenn der SQLBindParameter -Parameter aufgerufen wird und ParameterType auf SQL_SS_TABLE festgelegt ist, wird SQL_ERROR zurückgegeben, und ein Diagnosedatensatz mit der Meldung SQLSTATE=HY004, "Ungültiger SQL-Datentyp" generiert. Dies kann auch mit SQLSetDescField und SQLSetDescRec auftreten.

Tabellenwertparameter-Spaltenwerte verfügen über dieselben Datenkonvertierungsoptionen wie Parameter und Ergebnisspalten.

Ein Tabellenwertparameter kann nur ein Eingabeparameter in SQL Server 2008 (10.0.x) oder höher sein. Wenn versucht wird, SQL_DESC_PARAMETER_TYPE auf einen anderen Wert als SQL_PARAM_INPUT über SQLBindParameter oder SQLSetDescField festzulegen, wird SQL_ERROR zurückgegeben, und der Anweisung wird ein Diagnosedatensatz mit SQLSTATE=HY105 und der Meldung "Ungültiger Parametertyp" hinzugefügt.

Tabellenwertparameter-Spalten können SQL_DEFAULT_PARAM nicht in StrLen_or_IndPtrverwenden, da Standardwerte pro Zeile nicht mit Tabellenwertparametern unterstützt werden. Stattdessen kann eine Anwendung das Spaltenattribut SQL_CA_SS_COL_HAS_DEFAULT_VALUE auf 1 festlegen. Dies bedeutet, dass die Spalte Standardwerte für alle Zeilen aufweist. Wenn StrLen_or_IndPtr auf SQL_DEFAULT_PARAM festgelegt ist, gibt SQLExecute oder SQLExecDirect SQL_ERROR zurück, und der Anweisung wird ein Diagnosedatensatz mit SQLSTATE=HY090 und der Meldung "Ungültige Zeichenfolge oder Pufferlänge" hinzugefügt.

Weitere Informationen

Tabellenwertparameter (ODBC)