SQLSetDescField 和 SQLSetDescRec (資料指標程式庫)
重要
Windows 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 Microsoft 建議使用驅動程式的資料指標功能。
本主題討論資料指標程式庫中的 SQLSetDescField 和 SQLSetDescRec 函式的使用。 如需這些函式的一般資訊,請參閱 SQLSetDescField 函 式和 SQLSetDescRec 函式 。
呼叫資料指標程式庫時會 執行 SQLSetDescField ,以傳回為書簽資料行設定的欄位值:
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
資料指標程式庫會針對書簽資料行執行對 SQLSetDescRec 的呼叫 。
使用 ODBC 2.x 驅動程式時,當呼叫 SQLSetDescField 或 SQLSetDescRec 時 ,資料指標程式庫會傳回 SQLSTATE HY090 (字串或緩衝區長度無效),以將 ARD 書簽記錄的SQL_DESC_OCTET_LENGTH欄位設定為不等於 4 的值。 使用 ODBC 3.x 驅動程式時,資料指標程式庫可讓緩衝區成為任何大小。
呼叫資料指標程式庫時會 執行 SQLSetDescField ,以傳回SQL_DESC_BIND_OFFSET_PTR、SQL_DESC_BIND_TYPE、SQL_DESC_ROW_ARRAY_SIZE或SQL_DESC_ROW_STATUS_PTR欄位的值。 您可以針對任何資料列傳回這些欄位,而不只是書簽資料列。
資料指標程式庫不會執行 SQLSetDescField 來變更上述欄位以外的任何描述元欄位。 如果應用程式在載入資料指標程式庫時呼叫 SQLSetDescField 來設定任何其他欄位,則會將呼叫傳遞至驅動程式。
資料指標程式庫支援動態變更應用程式資料列描述元之任何資料列的SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR和SQL_DESC_OCTET_LENGTH_PTR欄位(在呼叫 SQLExtendedFetch、 SQLFetch 或 SQLFetchScroll 之後)。 SQL_DESC_OCTET_LENGTH_PTR欄位只能變更為 Null 指標,以解除資料行長度緩衝區的系結。
資料指標程式庫不支援在開啟資料指標時變更 APD 或 ARD 中的SQL_DESC_BIND_TYPE欄位。 SQL_DESC_BIND_TYPE欄位只能在資料指標關閉且開啟新資料指標之前變更。 當資料指標開啟時,資料指標程式庫支援變更的唯一描述元欄位是SQL_DESC_ARRAY_STATUS_PTR、SQL_DESC_BIND_OFFSET_PTR、SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、SQL_DESC_OCTET_LENGTH_PTR和SQL_DESC_ROWS_PROCESSED_PTR。
資料指標程式庫不支援在呼叫 SQLExtendedFetch 或 SQLFetchScroll 之後 ,以及在關閉資料指標之前修改 ARD 的SQL_DESC_COUNT欄位。