SQLSetDescField and SQLSetDescRec (libreria di cursori)
Importante
Questa funzionalità verrà rimossa nelle versioni future di Windows. Evitare di usare questa funzionalità nel nuovo lavoro di sviluppo e pianificare la modifica delle applicazioni che attualmente usano questa funzionalità. Microsoft consiglia di usare la funzionalità cursore del driver.
Questo argomento illustra l'uso delle funzioni SQLSetDescField e SQLSetDescRec nella libreria di cursori. Per informazioni generali su queste funzioni, vedere Funzione SQLSetDescField e funzione SQLSetDescRec.
La libreria di cursori esegue SQLSetDescField quando viene chiamato per restituire il valore dei campi impostati per le colonne di segnalibro:
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
La libreria di cursori esegue chiamate a SQLSetDescRec per una colonna di segnalibro.
Quando si utilizza un driver ODBC 2.x , la libreria di cursori restituisce SQLSTATE HY090 (stringa o lunghezza buffer non valida) quando SQLSetDescField o SQLSetDescRec viene chiamato per impostare il campo SQL_DESC_OCTET_LENGTH per il record di segnalibro di un ARD su un valore diverso da 4. Quando si utilizza un driver ODBC 3.x , la libreria di cursori consente al buffer di essere qualsiasi dimensione.
La libreria di cursori esegue SQLSetDescField quando viene chiamato per restituire il valore del campo SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_BIND_TYPE, SQL_DESC_ROW_ARRAY_SIZE o SQL_DESC_ROW_STATUS_PTR. Questi campi possono essere restituiti per qualsiasi riga, non solo per la riga del segnalibro.
La libreria di cursori non esegue SQLSetDescField per modificare alcun campo descrittore diverso dai campi indicati in precedenza. Se un'applicazione chiama SQLSetDescField per impostare qualsiasi altro campo mentre viene caricata la libreria di cursori, la chiamata viene passata al driver.
La libreria di cursori supporta la modifica dinamica dei campi SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR e SQL_DESC_OCTET_LENGTH_PTR di qualsiasi riga di un descrittore di riga dell'applicazione (dopo una chiamata a SQLExtendedFetch, SQLFetch o SQLFetchScroll). Il campo SQL_DESC_OCTET_LENGTH_PTR può essere modificato in un puntatore Null solo per annullare l'associazione del buffer di lunghezza per una colonna.
La libreria di cursori non supporta la modifica del campo SQL_DESC_BIND_TYPE in un APD o ARD quando un cursore è aperto. Il campo SQL_DESC_BIND_TYPE può essere modificato solo dopo la chiusura del cursore e prima dell'apertura di un nuovo cursore. Gli unici campi descrittori che la libreria di cursori supporta la modifica quando un cursore è aperto sono SQL_DESC_ARRAY_STATUS_PTR, SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, SQL_DESC_OCTET_LENGTH_PTR e SQL_DESC_ROWS_PROCESSED_PTR.
La libreria di cursori non supporta la modifica del campo SQL_DESC_COUNT dell'ARD dopo la chiamata di SQLExtendedFetch o SQLFetchScroll e prima della chiusura del cursore.