SQLSetDescField und SQLSetDescRec (Cursorbibliothek)
Wichtig
Dieses Feature wird in einer zukünftigen Version von Windows entfernt. Vermeiden Sie die Verwendung dieses Features in neuen Entwicklungsvorgängen, und planen Sie das Ändern von Anwendungen, die dieses Feature derzeit verwenden. Microsoft empfiehlt die Verwendung der Cursorfunktion des Treibers.
In diesem Thema wird die Verwendung der Funktionen SQLSetDescField und SQLSetDescRec in der Cursorbibliothek erläutert. Allgemeine Informationen zu diesen Funktionen finden Sie unter SQLSetDescField-Funktion und SQLSetDescRec-Funktion.
Die Cursorbibliothek führt SQLSetDescField aus, wenn sie aufgerufen wird, um den Wert der felder zurückzugeben, die für Lesezeichenspalten festgelegt sind:
SQL_DESC_DATA_PTR
SQL_DESC_INDICATOR_PTR
SQL_DESC_OCTET_LENGTH_PTR
SQL_DESC_LENGTH
SQL_DESC_OCTET_LENGTH
SQL_DESC_DATETIME_INTERVAL_CODE
SQL_DESC_SCALE
SQL_DESC_PRECISION
SQL_DESC_TYPE
SQL_DESC_NAME
SQL_DESC_UNNAMED
SQL_DESC_NULLABLE
Die Cursorbibliothek führt Aufrufe von SQLSetDescRec für eine Lesezeichenspalte aus.
Bei der Arbeit mit einem ODBC 2.x-Treiber gibt die Cursorbibliothek SQLSTATE HY090 (Ungültige Zeichenfolgen- oder Pufferlänge) zurück, wenn SQLSetDescField oder SQLSetDescRec aufgerufen wird, um das SQL_DESC_OCTET_LENGTH Feld für den Lesezeichendatensatz einer ARD auf einen Wert ungleich 4 festzulegen. Wenn Sie mit einem ODBC 3.x-Treiber arbeiten, lässt die Cursorbibliothek zu, dass der Puffer eine beliebige Größe hat.
Die Cursorbibliothek führt SQLSetDescField aus, wenn sie aufgerufen wird, um den Wert des felds SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_BIND_TYPE, SQL_DESC_ROW_ARRAY_SIZE oder SQL_DESC_ROW_STATUS_PTR zurückzugeben. Diese Felder können für jede Zeile zurückgegeben werden, nicht nur für die Textmarkenzeile.
Die Cursorbibliothek führt SQLSetDescField nicht aus, um ein anderes Deskriptorfeld als die zuvor genannten Felder zu ändern. Wenn eine Anwendung SQLSetDescField aufruft, um ein anderes Feld festzulegen, während die Cursorbibliothek geladen wird, wird der Aufruf an den Treiber übergeben.
Die Cursorbibliothek unterstützt das dynamische Ändern der SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR und SQL_DESC_OCTET_LENGTH_PTR Felder einer zeile eines Anwendungszeilendeskriptors (nach einem Aufruf von SQLExtendedFetch, SQLFetch oder SQLFetchScroll). Das SQL_DESC_OCTET_LENGTH_PTR Feld kann nur in einen NULL-Zeiger geändert werden, um die Bindung des Längenpuffers für eine Spalte aufzuheben.
Die Cursorbibliothek unterstützt das Ändern des SQL_DESC_BIND_TYPE Felds in einer APD oder ARD nicht, wenn ein Cursor geöffnet ist. Das feld SQL_DESC_BIND_TYPE kann nur geändert werden, nachdem der Cursor geschlossen wurde und bevor ein neuer Cursor geöffnet wird. Die einzigen Deskriptorfelder, die von der Cursorbibliothek geändert werden, wenn ein Cursor geöffnet ist, sind SQL_DESC_ARRAY_STATUS_PTR, SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, SQL_DESC_OCTET_LENGTH_PTR und SQL_DESC_ROWS_PROCESSED_PTR.
Die Cursorbibliothek unterstützt das Ändern des SQL_DESC_COUNT Felds der ARD nach dem Aufrufen von SQLExtendedFetch oder SQLFetchScroll und vor dem Schließen des Cursors nicht.