ODBC-SQL-Typ für Tabellenwertparameter
Unterstützung für Tabellenwertparameter wird von einem neuen ODBC-SQL-Typ, SQL_SS_TABLE, bereitgestellt.
Hinweise
SQL_SS_TABLE kann nicht in einen anderen ODBC- oder SQL Server-Datentyp konvertiert werden.
Wenn SQL_SS_TABLE im ValueType-Parameter von SQLBindParameter als C-Datentyp verwendet wird oder versucht wird, SQL_DESC_TYPE in einem Anwendungsparameterdeskriptor-Datensatz auf SQL_SS_TABLE festzulegen, wird SQL_ERROR zurückgegeben, und ein Diagnosedatensatz mit der Meldung SQLSTATE=HY003, "Ungültiger Anwendungspuffertyp" wird 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 bei dem ParameterType eines SQLSetDescField SQLSetDescRec oder einem SQLBindParameter vorkommen.
Wenn der TargetType-Parameter SQL_SS_TABLE ist und SQLGetData aufgerufen wird, wird SQL_ERROR zurückgegeben, und ein Diagnosedatensatz mit der Meldung SQLSTATE=HY003, "Ungültiger Anwendungspuffertyp" wird generiert.
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.
Bei einem Tabellenwertparameter kann es sich nur um einen Eingabeparameter in SQL Server 2008 oder höher handeln. Wenn versucht wird, SQL_DESC_PARAMETER_TYPE über SQLBindParameter oder SQLSetDescField auf einen anderen Wert als SQL_PARAM_INPUT festzulegen, wird SQL_ERROR zurückgegeben, und der Anweisung wird ein Diagnosedatensatz mit SQLSTATE=HY105 und der Meldung "Der Parametertyp ist ungültig" hinzugefügt.
Tabellenwertparameter-Spalten können SQL_DEFAULT_PARAM nicht in StrLen_or_IndPtr verwenden, 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 wird, geben SQLExecute oder SQLExecDirect SQL_ERROR zurück, und der Anweisung wird ein Diagnosedatensatz mit SQLSTATE=HY090 und der Meldung "Ungültige Zeichenfolgen- oder Pufferlänge" hinzugefügt.