Condividi tramite


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.