Funzione SQLSetStmtAttr

Conformità
Versione introdotta: Conformità agli standard ODBC 3.0: ISO 92

Riepilogo
SQLSetStmtAttr imposta gli attributi correlati a un'istruzione .

Nota

Per altre informazioni sul mapping di questa funzione a quando un'applicazione ODBC 3.x utilizza un driver ODBC 2.x, vedere Mapping di funzioni di sostituzione per la compatibilità con le versioni precedenti delle applicazioni.

Sintassi

  
SQLRETURN SQLSetStmtAttr(  
     SQLHSTMT      StatementHandle,  
     SQLINTEGER    Attribute,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    StringLength);  

Argomenti

StatementHandle
[Input] Handle di istruzione.

Attributo
[Input] Opzione da impostare, elencata in "Commenti".

ValuePtr
[Input] Valore da associare all'attributo. A seconda del valore di Attribute, ValuePtr sarà uno dei seguenti:

  • Handle del descrittore ODBC.

  • Valore SQLUINTEGER.

  • Valore SQLULEN.

  • Puntatore a uno dei seguenti elementi:

    • Stringa di caratteri con terminazione Null.

    • Buffer binario.

    • Valore o matrice di tipo SQLLEN, SQLULEN o SQLUSMALLINT.

    • Valore definito dal driver.

Se l'argomento Attribute è un valore specifico del driver, ValuePtr può essere un intero con segno.

StringLength
[Input] Se Attribute è un attributo definito da ODBC e ValuePtr punta a una stringa di caratteri o a un buffer binario, questo argomento deve essere la lunghezza di *ValuePtr. Se Attribute è un attributo definito da ODBC e ValuePtr è un numero intero, StringLength viene ignorato.

Se Attribute è un attributo definito dal driver, l'applicazione indica la natura dell'attributo a Gestione driver impostando l'argomento StringLength . StringLength può avere i valori seguenti:

  • Se ValuePtr è un puntatore a una stringa di caratteri, StringLength è la lunghezza della stringa o SQL_NTS.

  • Se ValuePtr è un puntatore a un buffer binario, l'applicazione inserisce il risultato della macro SQL_LEN_BINARY_ATTR(length) in StringLength. In questo modo viene impostato un valore negativo in StringLength.

  • Se ValuePtr è un puntatore a un valore diverso da una stringa di caratteri o una stringa binaria, StringLength deve avere il valore SQL_IS_POINTER.

  • Se ValuePtr contiene un valore a lunghezza fissa, StringLength è SQL_IS_INTEGER o SQL_IS_UINTEGER, in base alle esigenze.

Valori restituiti

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR o SQL_INVALID_HANDLE.

Diagnostica

Quando SQLSetStmtAttr restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, è possibile ottenere un valore SQLSTATE associato chiamando SQLGetDiagRec con handleType di SQL_HANDLE_STMT e handle di StatementHandle. La tabella seguente elenca i valori SQLSTATE comunemente restituiti da SQLSetStmtAttr e spiega ognuno di essi nel contesto di questa funzione. La notazione "(DM)" precede le descrizioni di SQLSTATEs restituite da Gestione driver. Il codice restituito associato a ogni valore SQLSTATE è SQL_ERROR, a meno che non sia specificato diversamente.

SQLSTATE Errore Descrizione
01000 Avviso generale Messaggio informativo specifico del driver. (La funzione restituisce SQL_SUCCESS_WITH_INFO.
01S02 Valore dell'opzione modificato Il driver non supporta il valore specificato in ValuePtr o il valore specificato in ValuePtr non è valido a causa delle condizioni di lavoro dell'implementazione, quindi il driver ha sostituito un valore simile. È possibile chiamare SQLGetStmtAttr per determinare il valore sostituito temporaneamente. Il valore sostitutivo è valido per StatementHandle fino a quando il cursore non viene chiuso, a quel punto l'attributo dell'istruzione ripristina il valore precedente. Gli attributi dell'istruzione che possono essere modificati sono:

SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ATTR_ROW_ARRAY_SIZE SQL_ ATTR_SIMULATE_CURSOR

(La funzione restituisce SQL_SUCCESS_WITH_INFO.
08S01 Errore del collegamento di comunicazione Collegamento di comunicazione tra il driver e l'origine dati a cui è stato connesso il driver non è riuscito prima del completamento dell'elaborazione della funzione.
24000 Stato del cursore non valido L'attributo è stato SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_SIMULATE_CURSOR o SQL_ATTR_USE_BOOKMARKS e il cursore era aperto.
HY000 Errore generale: Si è verificato un errore per il quale non è stato specificato SQLSTATE e per il quale non è stato definito alcun SQLSTATE specifico dell'implementazione. Il messaggio di errore restituito da SQLGetDiagRec nel buffer *MessageText descrive l'errore e la relativa causa.
HY001 Errore di allocazione della memoria Il driver non è riuscito ad allocare memoria necessaria per supportare l'esecuzione o il completamento della funzione.
HY009 Uso non valido del puntatore Null L'argomento Attribute ha identificato un attributo di istruzione che richiedeva un attributo stringa e l'argomento ValuePtr era un puntatore Null.
HY010 Errore della sequenza di funzioni (DM) È stata chiamata una funzione in esecuzione asincrona per l'handle di connessione associato a StatementHandle. Questa funzione asincrona era ancora in esecuzione quando è stata chiamata la funzione SQLSetStmtAttr .

(DM) SQLExecute, SQLExecDirect o SQLMoreResults è stato chiamato per StatementHandle e restituito SQL_PARAM_DATA_AVAILABLE. Questa funzione è stata chiamata prima del recupero dei dati per tutti i parametri trasmessi.

(DM) È stata chiamata una funzione in esecuzione asincrona per StatementHandle ed era ancora in esecuzione quando questa funzione è stata chiamata.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos è stato chiamato per StatementHandle e restituito SQL_NEED_DATA. Questa funzione è stata chiamata prima dell'invio dei dati per tutti i parametri o le colonne data-at-execution.
HY011 Impossibile impostare l'attributo ora L'attributo è stato SQL_ATTR_CONCURRENCY, SQL_ ATTR_CURSOR_TYPE, SQL_ ATTR_SIMULATE_CURSOR o SQL_ ATTR_USE_BOOKMARKS e l'istruzione è stata preparata.
HY013 Errore di gestione della memoria Impossibile elaborare la chiamata di funzione perché non è stato possibile accedere agli oggetti di memoria sottostanti, probabilmente a causa di condizioni di memoria insufficiente.
HY017 Uso non valido di un handle descrittore allocato automaticamente (DM) L'argomento Attribute è stato SQL_ATTR_IMP_ROW_DESC o SQL_ATTR_IMP_PARAM_DESC.

(DM) L'argomento Attribute è stato SQL_ATTR_APP_ROW_DESC o SQL_ATTR_APP_PARAM_DESC e il valore in ValuePtr era un handle descrittore allocato in modo implicito diverso dall'handle originariamente allocato per ARD o APD.
HY024 Valore dell'attributo non valido Dato il valore attribute specificato, è stato specificato un valore non valido in ValuePtr. Gestione driver restituisce questo SQLSTATE solo per gli attributi di connessione e istruzione che accettano un set discreto di valori, ad esempio SQL_ATTR_ACCESS_MODE o SQL_ ATTR_ASYNC_ENABLE. Per tutti gli altri attributi di connessione e istruzione, il driver deve verificare il valore specificato in ValuePtr.

L'argomento Attribute è stato SQL_ATTR_APP_ROW_DESC o SQL_ATTR_APP_PARAM_DESC e ValuePtr era un handle descrittore allocato in modo esplicito che non si trova nella stessa connessione dell'argomento StatementHandle .
HY090 Lunghezza della stringa o del buffer non valida (DM) *ValuePtr è una stringa di caratteri e l'argomento StringLength è minore di 0, ma non è stato SQL_NTS.
HY092 Identificatore di attributo/opzione non valido (DM) Il valore specificato per l'argomento Attribute non è valido per la versione di ODBC supportata dal driver.

(DM) Il valore specificato per l'argomento Attribute è un attributo di sola lettura.
HY117 La connessione viene sospesa a causa dello stato sconosciuto della transazione. Sono consentite solo funzioni disconnesse e di sola lettura. (DM) Per altre informazioni sullo stato sospeso, vedere Funzione SQLEndTran.
HYC00 Funzionalità facoltativa non implementata Il valore specificato per l'argomento Attribute è un attributo di istruzione ODBC valido per la versione di ODBC supportata dal driver, ma non è supportata dal driver.

L'argomento Attribute è stato SQL_ATTR_ASYNC_ENABLE e una chiamata a SQLGetInfo con infoType di SQL_ASYNC_MODE restituisce SQL_AM_CONNECTION.

L'argomento Attribute è stato SQL_ATTR_ENABLE_AUTO_IPD e il valore dell'attributo di connessione SQL_ATTR_AUTO_IPD è stato SQL_FALSE.
HYT01 Il timeout della connessione è scaduto Periodo di timeout della connessione scaduto prima che l'origine dati rispondesse alla richiesta. Il periodo di timeout della connessione viene impostato tramite SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Il driver non supporta questa funzione (DM) Il driver associato a StatementHandle non supporta la funzione.
S1118 Il driver non supporta la notifica asincrona Se si chiama SQLSetStmtAttr per impostare SQL_ATTR_ASYNC_STMT_EVENT; la notifica asincrona non è supportata dal driver.

Commenti

Gli attributi dell'istruzione per un'istruzione rimangono attivi fino a quando non vengono modificati da un'altra chiamata a SQLSetStmtAttr o fino a quando l'istruzione non viene eliminata chiamando SQLFreeHandle. La chiamata a SQLFreeStmt con l'opzione SQL_CLOSE, SQL_UNBIND o SQL_RESET_PARAMS non reimposta gli attributi dell'istruzione.

Alcuni attributi di istruzione supportano la sostituzione di un valore simile se l'origine dati non supporta il valore specificato in ValuePtr. In questi casi, il driver restituisce SQL_SUCCESS_WITH_INFO e SQLSTATE 01S02 (valore opzione modificato). Ad esempio, se Attribute è SQL_ATTR_CONCURRENCY e ValuePtr è SQL_CONCUR_ROWVER e se l'origine dati non lo supporta, il driver sostituisce SQL_CONCUR_VALUES e restituisce SQL_SUCCESS_WITH_INFO. Per determinare il valore sostituito, un'applicazione chiama SQLGetStmtAttr.

Il formato delle informazioni impostate con ValuePtr dipende dall'attributo specificato. SQLSetStmtAttr accetta informazioni sull'attributo in uno dei due formati diversi: una stringa di caratteri o un valore intero. Il formato di ogni attributo è indicato nella descrizione dell'attributo. Questo formato si applica alle informazioni restituite per ogni attributo in SQLGetStmtAttr. Le stringhe di caratteri a cui punta l'argomento ValuePtr di SQLSetStmtAttr hanno una lunghezza di StringLength.

Nota

La possibilità di impostare gli attributi di istruzione a livello di connessione chiamando SQLSet Connessione Attr è stata deprecata in ODBC 3.x. Le applicazioni ODBC 3.x non devono mai impostare attributi di istruzione a livello di connessione. Gli attributi dell'istruzione ODBC 3.x non possono essere impostati a livello di connessione, ad eccezione degli attributi SQL_ATTR_METADATA_ID e SQL_ATTR_ASYNC_ENABLE, che sono attributi di connessione e attributi dell'istruzione e possono essere impostati a livello di connessione o di istruzione.

Nota

I driver ODBC 3.x devono supportare questa funzionalità solo se devono funzionare con applicazioni ODBC 2.x che impostano le opzioni di istruzione ODBC 2.x a livello di connessione. Per altre informazioni, vedere "Impostazione delle opzioni delle istruzioni sul livello di connessione" in Mapping SQLSetConnectOption nell'Appendice G: Linee guida per la compatibilità con le versioni precedenti.

Attributi di istruzione che impostano i campi del descrittore

Molti attributi di istruzione corrispondono a un campo di intestazione di un descrittore. L'impostazione di questi attributi comporta effettivamente l'impostazione dei campi del descrittore. L'impostazione dei campi in base a una chiamata a SQLSetStmtAttr anziché a SQLSetDescField offre il vantaggio che non è necessario ottenere un handle descrittore per la chiamata di funzione.

Attenzione

La chiamata a SQLSetStmtAttr per un'istruzione può influire sulle altre istruzioni. Ciò si verifica quando l'APD o il ARD associato all'istruzione viene allocato in modo esplicito ed è associato anche ad altre istruzioni. Poiché SQLSetStmtAttr modifica APD o ARD, le modifiche si applicano a tutte le istruzioni a cui è associato questo descrittore. Se questo non è il comportamento richiesto, l'applicazione deve annullare l'associazione di questo descrittore dalle altre istruzioni (chiamando SQLSetStmtAttr per impostare nuovamente il campo SQL_ATTR_APP_ROW_DESC o SQL_ATTR_APP_PARAM_DESC su un handle descrittore diverso) prima di chiamare di nuovo SQLSetStmtAttr.

Quando un campo descrittore viene impostato come risultato dell'attributo di istruzione corrispondente impostato, il campo viene impostato solo per i descrittori applicabili attualmente associati all'istruzione identificata dall'argomento StatementHandle e l'impostazione dell'attributo non influisce sui descrittori che possono essere associati a tale istruzione in futuro. Quando un campo descrittore che è anche un attributo di istruzione viene impostato da una chiamata a SQLSetDescField, viene impostato l'attributo di istruzione corrispondente. Se un descrittore allocato in modo esplicito viene dissociato da un'istruzione, un attributo di istruzione che corrisponde a un campo di intestazione ripristina il valore del campo nel descrittore allocato in modo implicito.

Quando un'istruzione viene allocata (vedere SQLAllocHandle), quattro handle del descrittore vengono allocati automaticamente e associati all'istruzione . Gli handle del descrittore allocati in modo esplicito possono essere associati all'istruzione chiamando SQLAllocHandle con un fHandleType di SQL_HANDLE_DESC per allocare un handle descrittore e quindi chiamando SQLSetStmtAttr per associare l'handle del descrittore all'istruzione .

Gli attributi dell'istruzione nella tabella seguente corrispondono ai campi di intestazione del descrittore.

Attributo Statement Campo intestazione Desc.
SQL_ATTR_PARAM_BIND_OFFSET_PTR SQL_DESC_BIND_OFFSET_PTR APD
SQL_ATTR_PARAM_BIND_TYPE SQL_DESC_BIND_TYPE APD
SQL_ATTR_PARAM_OPERATION_PTR SQL_DESC_ARRAY_STATUS_PTR APD
SQL_ATTR_PARAM_STATUS_PTR SQL_DESC_ARRAY_STATUS_PTR IPD
SQL_ATTR_PARAMS_PROCESSED_PTR SQL_DESC_ROWS_PROCESSED_PTR IPD
SQL_ATTR_PARAMSET_SIZE SQL_DESC_ARRAY_SIZE APD
SQL_ATTR_ROW_ARRAY_SIZE SQL_DESC_ARRAY_SIZE ARD
SQL_ATTR_ROW_BIND_OFFSET_PTR SQL_DESC_BIND_OFFSET_PTR ARD
SQL_ATTR_ROW_BIND_TYPE SQL_DESC_BIND_TYPE ARD
SQL_ATTR_ROW_OPERATION_PTR SQL_DESC_ARRAY_STATUS_PTR ARD
SQL_ATTR_ROW_STATUS_PTR SQL_DESC_ARRAY_STATUS_PTR IRD
SQL_ATTR_ROWS_FETCHED_PTR SQL_DESC_ROWS_PROCESSED_PTR IRD

Attributi di istruzione

Gli attributi attualmente definiti e la versione di ODBC in cui sono stati introdotti sono illustrati nella tabella seguente; è previsto che più attributi saranno definiti dai driver per sfruttare i vantaggi di origini dati diverse. Un intervallo di attributi è riservato da ODBC; Gli sviluppatori di driver devono riservare valori per il proprio uso specifico del driver da Open Group. Per ulteriori informazioni, vedere Tipi di dati specifici del driver, tipi di descrittori, tipi di informazioni, tipi di diagnostica e attributi.

Attributo Contenuto di ValuePtr
SQL_ATTR_APP_PARAM_DESC (ODBC 3.0) Handle dell'APD per le chiamate successive a SQLExecute e SQLExecDirect nell'handle dell'istruzione. Il valore iniziale di questo attributo è il descrittore allocato in modo implicito quando l'istruzione è stata allocata inizialmente. Se il valore di questo attributo è impostato su SQL_NULL_DESC o sull'handle originariamente allocato per il descrittore, un handle APD allocato in modo esplicito associato all'handle di istruzione viene dissociato da esso e l'handle dell'istruzione viene ripristinato all'handle APD allocato in modo implicito.

Questo attributo non può essere impostato su un handle descrittore allocato in modo implicito per un'altra istruzione o su un altro handle descrittore impostato in modo implicito sulla stessa istruzione; Gli handle del descrittore allocati in modo implicito non possono essere associati a più di un'istruzione o a un handle descrittore.
SQL_ATTR_APP_ROW_DESC (ODBC 3.0) Handle per il ARD per i recupero successivi sull'handle di istruzione. Il valore iniziale di questo attributo è il descrittore allocato in modo implicito quando l'istruzione è stata allocata inizialmente. Se il valore di questo attributo è impostato su SQL_NULL_DESC o sull'handle originariamente allocato per il descrittore, un handle ARD allocato in modo esplicito associato in precedenza all'handle di istruzione viene dissociato e l'handle dell'istruzione viene ripristinato all'handle ARD allocato in modo implicito.

Questo attributo non può essere impostato su un handle descrittore allocato in modo implicito per un'altra istruzione o su un altro handle descrittore impostato in modo implicito sulla stessa istruzione; Gli handle del descrittore allocati in modo implicito non possono essere associati a più di un'istruzione o a un handle descrittore.
SQL_ATTR_ASYNC_ENABLE (ODBC 1.0) Valore SQLULEN che specifica se una funzione chiamata con l'istruzione specificata viene eseguita in modo asincrono:

SQL_ASYNC_ENABLE_OFF = Disabilitare il supporto dell'esecuzione asincrona a livello di istruzione (impostazione predefinita).

SQL_ASYNC_ENABLE_ON = Abilitare il supporto per l'esecuzione asincrona a livello di istruzione.

Per altre informazioni, vedere Esecuzione asincrona (metodo di polling).

Per i driver con supporto asincrono a livello di istruzione, l'attributo di istruzione SQL_ATTR_ASYNC_ENABLE è di sola lettura. Il valore è uguale al valore dell'attributo del livello di connessione con lo stesso nome al momento dell'allocazione dell'handle di istruzione.

La chiamata a SQLSetStmtAttr per impostare SQL_ATTR_ASYNC_ENABLE quando il SQL_ASYNC_MODE InfoType restituisce SQL_AM_CONNECTION restituisce SQLSTATE HYC00 (funzionalità facoltativa non implementata). Per altre informazioni, vedere Funzione SQLSetConnectAttr.
SQL_ATTR_ASYNC_STMT_EVENT (ODBC 3.8) Valore DI SQLPOINTER che è un handle di eventi.

La notifica del completamento delle funzioni asincrone viene abilitata chiamando SQLSetStmtAttr per impostare l'attributo SQL_ATTR_ASYNC_STMT_EVENT e specificare l'handle dell'evento.
SQL_ATTR_ASYNC_STMT_PCALLBACK (ODBC 3.8) SQLPOINTER per la funzione di callback asincrona.

Solo Gestione driver può chiamare la funzione SQLSetStmtAttr di un driver con questo attributo.
SQL_ATTR_ASYNC_STMT_PCONTEXT (ODBC 3.8) SQLPOINTER per la struttura del contesto

Solo Gestione driver può chiamare la funzione SQLSetStmtAttr di un driver con questo attributo.
SQL_ATTR_CONCURRENCY (ODBC 2.0) Valore SQLULEN che specifica la concorrenza del cursore:

SQL_CONCUR_READ_ONLY = Cursor è di sola lettura. Non sono consentiti aggiornamenti.

SQL_CONCUR_LOCK = Cursor usa il livello di blocco più basso sufficiente per garantire che la riga possa essere aggiornata.

SQL_CONCUR_ROWVER = Il cursore usa il controllo di concorrenza ottimistica, confrontando le versioni di riga, ad esempio SQLBase ROWID o Sybase TIMESTAMP.

SQL_CONCUR_VALUES = Cursor usa il controllo della concorrenza ottimistica, confrontando i valori.

Il valore predefinito per SQL_ATTR_CONCURRENCY è SQL_CONCUR_READ_ONLY.

Questo attributo non può essere specificato per un cursore aperto. Per altre informazioni, vedere Tipi di concorrenza.

Se l'attributo SQL_ATTR_CURSOR_TYPE viene modificato in un tipo che non supporta il valore corrente di SQL_ATTR_CONCURRENCY, il valore di SQL_ATTR_CONCURRENCY verrà modificato in fase di esecuzione e viene generato un avviso quando viene chiamato SQLExecDirect o SQLPrepare.

Se il driver supporta l'istruzione SELECT FOR UPDATE e tale istruzione viene eseguita mentre il valore di SQL_ATTR_CONCURRENCY è impostato su SQL_CONCUR_READ_ONLY, verrà restituito un errore. Se il valore di SQL_ATTR_CONCURRENCY viene modificato in un valore supportato dal driver per un valore di SQL_ATTR_CURSOR_TYPE ma non per il valore corrente di SQL_ATTR_CURSOR_TYPE, il valore di SQL_ATTR_CURSOR_TYPE verrà modificato in fase di esecuzione e SQLSTATE 01S02 (valore opzione modificato) viene generato quando viene chiamato SQLExecDirect o SQLPrepare .

Se la concorrenza specificata non è supportata dall'origine dati, il driver sostituisce una concorrenza diversa e restituisce SQLSTATE 01S02 (valore dell'opzione modificato). Per SQL_CONCUR_VALUES, il conducente sostituisce SQL_CONCUR_ROWVER e viceversa. Per SQL_CONCUR_LOCK, il conducente sostituisce, in ordine, SQL_CONCUR_ROWVER o SQL_CONCUR_VALUES. La validità del valore sostituito non viene controllata fino al tempo di esecuzione.

Per altre informazioni sulla relazione tra SQL_ATTR_CONCURRENCY e gli altri attributi del cursore, vedere Caratteristiche del cursore e Tipo di cursore.
SQL_ATTR_CURSOR_SCROLLABLE (ODBC 3.0) Valore SQLULEN che specifica il livello di supporto richiesto dall'applicazione. L'impostazione di questo attributo influisce sulle chiamate successive a SQLExecDirect e SQLExecute.

SQL_NONSCROLLABLE = I cursori scorrevoli non sono necessari nell'handle dell'istruzione. Se l'applicazione chiama SQLFetchScroll su questo handle, l'unico valore valido di FetchOrientation è SQL_FETCH_NEXT. Si tratta dell'impostazione predefinita.

SQL_SCROLLABLE = I cursori scorrevoli sono necessari nell'handle dell'istruzione. Quando si chiama SQLFetchScroll, l'applicazione può specificare qualsiasi valore valido di FetchOrientation, ottenendo il posizionamento del cursore in modalità diversa dalla modalità sequenziale.

Per altre informazioni sui cursori scorrevoli, vedere Cursori scorrevoli. Per altre informazioni sulla relazione tra SQL_ATTR_CURSOR_SCROLLABLE e gli altri attributi del cursore, vedere Caratteristiche del cursore e Tipo di cursore
SQL_ATTR_CURSOR_SENSITIVITY (ODBC 3.0) Valore SQLULEN che specifica se i cursori nell'handle dell'istruzione rendono visibili le modifiche apportate a un set di risultati da un altro cursore. L'impostazione di questo attributo influisce sulle chiamate successive a SQLExecDirect e SQLExecute. Un'applicazione può leggere il valore di questo attributo per ottenere lo stato iniziale o il relativo stato come impostato più di recente dall'applicazione.

SQL_UNSPECIFIED = Non è specificato il tipo di cursore e se i cursori nell'handle dell'istruzione rendono visibili le modifiche apportate a un set di risultati da un altro cursore. I cursori sull'handle di istruzione possono rendere visibili nessuno, alcuni o tutte queste modifiche. Si tratta dell'impostazione predefinita.

SQL_INSENSITIVE = Tutti i cursori nell'handle dell'istruzione mostrano il set di risultati senza riflettere le modifiche apportate da qualsiasi altro cursore. I cursori senza distinzione sono di sola lettura. Corrisponde a un cursore statico, che ha una concorrenza di sola lettura.

SQL_SENSITIVE = Tutti i cursori nell'handle dell'istruzione rendono visibili tutte le modifiche apportate a un set di risultati da un altro cursore.

Per altre informazioni sulla relazione tra SQL_ATTR_CURSOR_SENSITIVITY e gli altri attributi del cursore, vedere Caratteristiche del cursore e Tipo di cursore.
SQL_ATTR_CURSOR_TYPE (ODBC 2.0) Valore SQLULEN che specifica il tipo di cursore:

SQL_CURSOR_FORWARD_ONLY = Il cursore scorre solo in avanti.

SQL_CURSOR_STATIC = I dati nel set di risultati sono statici.

SQL_CURSOR_KEYSET_DRIVEN = Il driver salva e usa le chiavi per il numero di righe specificate nell'attributo dell'istruzione SQL_ATTR_KEYSET_SIZE.

SQL_CURSOR_DYNAMIC = Il driver salva e usa solo le chiavi per le righe nel set di righe.

Il valore predefinito è SQL_CURSOR_FORWARD_ONLY. Questo attributo non può essere specificato dopo la preparazione dell'istruzione SQL.

Se il tipo di cursore specificato non è supportato dall'origine dati, il driver sostituisce un tipo di cursore diverso e restituisce SQLSTATE 01S02 (valore opzione modificato). Per un cursore misto o dinamico, il driver sostituisce, in ordine, un cursore basato su keyset o statico. Per un cursore basato su keyset, il driver sostituisce un cursore statico.

Per altre informazioni sui tipi di cursore scorrevoli, vedere Tipi di cursore scorrevoli. Per altre informazioni sulla relazione tra SQL_ATTR_CURSOR_TYPE e gli altri attributi del cursore, vedere Caratteristiche del cursore e Tipo di cursore.
SQL_ATTR_ENABLE_AUTO_IPD (ODBC 3.0) Valore SQLULEN che specifica se viene eseguito il popolamento automatico dell'IPD:

SQL_TRUE = attiva il popolamento automatico dell'IPD dopo una chiamata a SQLPrepare. SQL_FALSE = Disattiva il popolamento automatico dell'IPD dopo una chiamata a SQLPrepare. Un'applicazione può comunque ottenere informazioni sul campo IPD chiamando SQLDescribeParam, se supportato. Il valore predefinito dell'attributo di istruzione SQL_ATTR_ENABLE_AUTO_IPD è SQL_FALSE. Per altre informazioni, vedere Popolamento automatico dell'IPD.
SQL_ATTR_FETCH_BOOKMARK_PTR (ODBC 3.0) SQLLEN * che punta a un valore di segnalibro binario. Quando SQLFetchScroll viene chiamato con fFetchOrientation uguale a SQL_FETCH_BOOKMARK, il driver preleva il valore del segnalibro da questo campo. Per impostazione predefinita, questo campo è un puntatore Null. Per altre informazioni, vedere Scorrimento per segnalibro.

Il valore a cui punta questo campo non viene usato per l'eliminazione tramite segnalibro, l'aggiornamento da segnalibro o il recupero da parte delle operazioni dei segnalibri in SQLBulkOperations, che usano segnalibri memorizzati nella cache nei buffer del set di righe.
SQL_ATTR_IMP_PARAM_DESC (ODBC 3.0) Handle per l'IPD. Il valore di questo attributo è il descrittore allocato al momento dell'allocazione iniziale dell'istruzione. L'applicazione non può impostare questo attributo.

Questo attributo può essere recuperato da una chiamata a SQLGetStmtAttr ma non impostata da una chiamata a SQLSetStmtAttr.
SQL_ATTR_IMP_ROW_DESC (ODBC 3.0) Handle per L'IRD. Il valore di questo attributo è il descrittore allocato al momento dell'allocazione iniziale dell'istruzione. L'applicazione non può impostare questo attributo.

Questo attributo può essere recuperato da una chiamata a SQLGetStmtAttr ma non impostata da una chiamata a SQLSetStmtAttr.
SQL_ATTR_KEYSET_SIZE (ODBC 2.0) SQLULEN che specifica il numero di righe nel keyset per un cursore basato su keyset. Se la dimensione del keyset è 0 (impostazione predefinita), il cursore è completamente basato su keyset. Se la dimensione del keyset è maggiore di 0, il cursore viene misto (basato su keyset all'interno del keyset e dinamico all'esterno del keyset). La dimensione predefinita del keyset è 0. Per altre informazioni sui cursori basati su keyset, vedere Cursori basati su keyset.

Se la dimensione specificata supera le dimensioni massime del keyset, il driver sostituisce tale dimensione e restituisce SQLSTATE 01S02 (valore opzione modificato).

SQLFetch o SQLFetchScroll restituisce un errore se la dimensione del keyset è maggiore di 0 e minore delle dimensioni del set di righe.
SQL_ATTR_MAX_LENGTH (ODBC 1.0) Valore SQLULEN che specifica la quantità massima di dati restituita dal driver da una colonna di tipo carattere o binario. Se ValuePtr è minore della lunghezza dei dati disponibili, SQLFetch o SQLGetData tronca i dati e restituisce SQL_SUCCESS. Se ValuePtr è 0 (impostazione predefinita), il driver tenta di restituire tutti i dati disponibili.

Se la lunghezza specificata è minore della quantità minima di dati che l'origine dati può restituire o superare la quantità massima di dati che l'origine dati può restituire, il driver sostituisce tale valore e restituisce SQLSTATE 01S02 (valore opzione modificato).

Il valore di questo attributo può essere impostato su un cursore aperto; Tuttavia, l'impostazione potrebbe non essere applicata immediatamente, nel qual caso il driver restituirà SQLSTATE 01S02 (valore di opzione modificato) e reimpostare l'attributo sul valore originale.

Questo attributo è progettato per ridurre il traffico di rete e deve essere supportato solo quando l'origine dati (anziché il driver) in un driver a più livelli può implementarla. Questo meccanismo non deve essere usato dalle applicazioni per troncare i dati; per troncare i dati ricevuti, un'applicazione deve specificare la lunghezza massima del buffer nell'argomento BufferLength in SQLBindCol o SQLGetData.
SQL_ATTR_MAX_ROWS (ODBC 1.0) Valore SQLULEN corrispondente al numero massimo di righe da restituire all'applicazione per un'istruzione SELECT . Se *ValuePtr è uguale a 0 (impostazione predefinita), il driver restituisce tutte le righe.

Questo attributo è progettato per ridurre il traffico di rete. Concettualmente, viene applicato quando viene creato il set di risultati e limita il set di risultati alle prime righe di ValuePtr . Se il numero di righe nel set di risultati è maggiore di ValuePtr, il set di risultati viene troncato.

SQL_ATTR_MAX_ROWS si applica a tutti i set di risultati nell'istruzione, inclusi quelli restituiti dalle funzioni del catalogo. SQL_ATTR_MAX_ROWS stabilisce un valore massimo per il valore del numero di righe del cursore.

Un driver non deve emulare SQL_ATTR_MAX_ROWS comportamento per SQLFetch o SQLFetchScroll (se non è possibile implementare limitazioni delle dimensioni del set di risultati nell'origine dati) se non è in grado di garantire che SQL_ATTR_MAX_ROWS verrà implementato correttamente.

È definito dal driver se SQL_ATTR_MAX_ROWS si applica a istruzioni diverse da istruzioni SELECT , ad esempio funzioni di catalogo.

Il valore di questo attributo può essere impostato su un cursore aperto; Tuttavia, l'impostazione potrebbe non essere applicata immediatamente, nel qual caso il driver restituirà SQLSTATE 01S02 (valore di opzione modificato) e reimpostare l'attributo sul valore originale.
SQL_ATTR_METADATA_ID (ODBC 3.0) Valore SQLULEN che determina la modalità di trattamento degli argomenti stringa delle funzioni di catalogo.

Se SQL_TRUE, l'argomento stringa delle funzioni del catalogo viene considerato come identificatori. Il caso non è significativo. Per le stringhe non eliminate, il driver rimuove tutti gli spazi finali e la stringa viene piegata in lettere maiuscole. Per le stringhe delimitate, il driver rimuove tutti gli spazi iniziali o finali e accetta qualsiasi elemento tra i delimitatori letteralmente. Se uno di questi argomenti è impostato su un puntatore Null, la funzione restituisce SQL_ERROR e SQLSTATE HY009 (uso non valido del puntatore Null).

Se SQL_FALSE, gli argomenti stringa delle funzioni di catalogo non vengono considerati come identificatori. Il caso è significativo. Possono contenere o meno un criterio di ricerca di stringhe, a seconda dell'argomento.

Il valore predefinito è SQL_FALSE.

L'argomento TableType di SQLTables, che accetta un elenco di valori, non è interessato da questo attributo.

SQL_ATTR_METADATA_ID possono essere impostati anche a livello di connessione. E SQL_ATTR_ASYNC_ENABLE sono gli unici attributi di istruzione che sono anche attributi di connessione.

Per altre informazioni, vedere Argomenti nelle Funzioni catalogo.
SQL_ATTR_NOSCAN (ODBC 1.0) Valore SQLULEN che indica se il driver deve analizzare le stringhe SQL per le sequenze di escape:

SQL_NOSCAN_OFF = Il driver analizza le stringhe SQL per individuare le sequenze di escape (impostazione predefinita).

SQL_NOSCAN_ON = Il driver non analizza le stringhe SQL per individuare sequenze di escape. Al contrario, il driver invia l'istruzione direttamente all'origine dati.

Per altre informazioni, vedere Sequenze di escape in ODBC.
SQL_ATTR_PARAM_BIND_OFFSET_PTR (ODBC 3.0) Valore DI SQLULEN * che punta a un offset aggiunto ai puntatori per modificare l'associazione di parametri dinamici. Se questo campo è diverso da Null, il driver dereferenzia il puntatore, aggiunge il valore dereferenziato a ognuno dei campi posticipati nel record del descrittore (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR e SQL_DESC_OCTET_LENGTH_PTR) e usa i nuovi valori del puntatore durante l'associazione. È impostato su Null per impostazione predefinita.

L'offset di associazione viene sempre aggiunto direttamente ai campi SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR e SQL_DESC_OCTET_LENGTH_PTR. Se l'offset viene modificato in un valore diverso, il nuovo valore viene comunque aggiunto direttamente al valore nel campo descrittore. Il nuovo offset non viene aggiunto al valore del campo più eventuali offset precedenti.

Per altre informazioni, vedere Offset di associazione di parametri.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_BIND_OFFSET_PTR nell'intestazione APD.
SQL_ATTR_PARAM_BIND_TYPE (ODBC 3.0) Valore SQLULEN che indica l'orientamento dell'associazione da usare per i parametri dinamici.

Questo campo è impostato su SQL_PARAM_BIND_BY_COLUMN (impostazione predefinita) per selezionare l'associazione a livello di colonna.

Per selezionare l'associazione a livello di riga, questo campo viene impostato sulla lunghezza della struttura o su un'istanza di un buffer che verrà associato a un set di parametri dinamici. Questa lunghezza deve includere spazio per tutti i parametri associati e qualsiasi spaziatura interna della struttura o del buffer per garantire che quando l'indirizzo di un parametro associato viene incrementato con la lunghezza specificata, il risultato punterà all'inizio dello stesso parametro nel set di parametri successivo. Quando si usa l'operatore sizeof in ANSI C, questo comportamento è garantito.

Per altre informazioni, vedere Binding Arrays of Parameters.For more information, see Binding Arrays of Parameters.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_ BIND_TYPE nell'intestazione APD.
SQL_ATTR_PARAM_OPERATION_PTR (ODBC 3.0) Valore SQLUSMALLINT * che punta a una matrice di valori SQLUSMALLINT usati per ignorare un parametro durante l'esecuzione di un'istruzione SQL. Ogni valore è impostato su SQL_PARAM_PROCEED (per l'esecuzione del parametro) o SQL_PARAM_IGNORE (per ignorare il parametro).

È possibile ignorare un set di parametri durante l'elaborazione impostando il valore di stato nella matrice a cui punta SQL_DESC_ARRAY_STATUS_PTR nel APD per SQL_PARAM_IGNORE. Un set di parametri viene elaborato se il valore di stato è impostato su SQL_PARAM_PROCEED o se non vengono impostati elementi nella matrice.

Questo attributo di istruzione può essere impostato su un puntatore Null, nel qual caso il driver non restituisce i valori di stato dei parametri. Questo attributo può essere impostato in qualsiasi momento, ma il nuovo valore non viene usato fino alla successiva chiamata di SQLExecDirect o SQLExecute .

Questo attributo viene ignorato quando non è presente alcun parametro associato.

Per altre informazioni, vedere Uso di matrici di parametri.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_ARRAY_STATUS_PTR nell'intestazione APD.
SQL_ATTR_PARAM_STATUS_PTR (ODBC 3.0) Valore SQLUSMALLINT * che punta a una matrice di valori SQLUSMALLINT contenenti informazioni sullo stato per ogni riga di valori di parametro dopo una chiamata a SQLExecute o SQLExecDirect. Questo campo è obbligatorio solo se PARAMSET_SIZE è maggiore di 1.

I valori di stato possono contenere i valori seguenti:

SQL_PARAM_SUCCESS: l'istruzione SQL è stata eseguita correttamente per questo set di parametri.

SQL_PARAM_SUCCESS_WITH_INFO: l'istruzione SQL è stata eseguita correttamente per questo set di parametri; Tuttavia, le informazioni di avviso sono disponibili nella struttura dei dati di diagnostica.

SQL_PARAM_ERROR: si è verificato un errore durante l'elaborazione di questo set di parametri. Altre informazioni sugli errori sono disponibili nella struttura dei dati di diagnostica.

SQL_PARAM_UNUSED: questo set di parametri è stato inutilizzato, probabilmente a causa del fatto che alcuni set di parametri precedenti hanno causato un errore che ha interrotto ulteriormente l'elaborazione o perché SQL_PARAM_IGNORE è stato impostato per tale set di parametri nella matrice specificata dal SQL_ATTR_PARAM_OPERATION_PTR.

SQL_PARAM_DIAG_UNAVAILABLE: il driver considera matrici di parametri come unità monolitica e quindi non genera questo livello di informazioni sugli errori.

Questo attributo di istruzione può essere impostato su un puntatore Null, nel qual caso il driver non restituisce i valori di stato dei parametri. Questo attributo può essere impostato in qualsiasi momento, ma il nuovo valore non viene usato fino alla successiva chiamata di SQLExecute o SQLExecDirect . Si noti che l'impostazione di questo attributo può influire sul comportamento del parametro di output implementato dal driver.

Per altre informazioni, vedere Uso di matrici di parametri.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_ARRAY_STATUS_PTR nell'intestazione IPD.
SQL_ATTR_PARAMS_PROCESSED_PTR (ODBC 3.0) Campo di record SQLULEN * che punta a un buffer in cui restituire il numero di set di parametri elaborati, inclusi i set di errori. Se si tratta di un puntatore Null, non verrà restituito alcun numero.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_ROWS_PROCESSED_PTR nell'intestazione IPD.

Se la chiamata a SQLExecDirect o SQLExecute che riempie il buffer a cui punta questo attributo non restituisce SQL_SUCCESS o SQL_SUCCESS_WITH_INFO, il contenuto del buffer non è definito.

Per altre informazioni, vedere Uso di matrici di parametri.
SQL_ATTR_PARAMSET_SIZE (ODBC 3.0) Valore SQLULEN che specifica il numero di valori per ogni parametro. Se SQL_ATTR_PARAMSET_SIZE è maggiore di 1, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR e SQL_DESC_OCTET_LENGTH_PTR delle matrici APD. La cardinalità di ogni matrice è uguale al valore di questo campo.

Questo attributo viene ignorato quando non è presente alcun parametro associato.

Per altre informazioni, vedere Uso di matrici di parametri.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_ARRAY_SIZE nell'intestazione APD.
SQL_ATTR_QUERY_TIMEOUT (ODBC 1.0) Valore SQLULEN corrispondente al numero di secondi di attesa dell'esecuzione di un'istruzione SQL prima di tornare all'applicazione. Se ValuePtr è uguale a 0 (impostazione predefinita), non esiste alcun timeout.

Se il timeout specificato supera il timeout massimo nell'origine dati o è inferiore al timeout minimo, SQLSetStmtAttr sostituisce tale valore e restituisce SQLSTATE 01S02 (valore opzione modificato).

Si noti che l'applicazione non deve chiamare SQLCloseCursor per riutilizzare l'istruzione in caso di timeout di un'istruzione SELECT .

Il timeout della query impostato in questo attributo di istruzione è valido sia in modalità sincrona che asincrona.
SQL_ATTR_RETRIEVE_DATA (ODBC 2.0) Valore SQLULEN:

SQL_RD_ON = SQLFetchScroll e, in ODBC 3.x, SQLFetch recupera i dati dopo aver posizionato il cursore nella posizione specificata. Si tratta dell'impostazione predefinita.

SQL_RD_OFF = SQLFetchScroll e, in ODBC 3.x, SQLFetch non recupera i dati dopo che posiziona il cursore.

Impostando SQL_RETRIEVE_DATA su SQL_RD_OFF, un'applicazione può verificare che una riga esista o recuperi un segnalibro per la riga senza incorrere nell'overhead di recupero delle righe. Per altre informazioni, vedere Scorrimento e recupero di righe.

Il valore di questo attributo può essere impostato su un cursore aperto; Tuttavia, l'impostazione potrebbe non essere applicata immediatamente, nel qual caso il driver restituirà SQLSTATE 01S02 (valore di opzione modificato) e reimpostare l'attributo sul valore originale.
SQL_ATTR_ROW_ARRAY_SIZE (ODBC 3.0) Valore SQLULEN che specifica il numero di righe restituite da ogni chiamata a SQLFetch o SQLFetchScroll. È anche il numero di righe in una matrice di segnalibri usata in un'operazione di segnalibro bulk in SQLBulkOperations. Il valore predefinito è 1.

Se la dimensione del set di righe specificata supera le dimensioni massime del set di righe supportate dall'origine dati, il driver sostituisce tale valore e restituisce SQLSTATE 01S02 (valore di opzione modificato).

Per altre informazioni, vedere Dimensioni set di righe.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_ARRAY_SIZE nell'intestazione ARD.
SQL_ATTR_ROW_BIND_OFFSET_PTR (ODBC 3.0) Valore DI SQLULEN * che punta a un offset aggiunto ai puntatori per modificare l'associazione di dati di colonna. Se questo campo è diverso da Null, il driver dereferenzia il puntatore, aggiunge il valore dereferenziato a ognuno dei campi posticipati nel record del descrittore (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR e SQL_DESC_OCTET_LENGTH_PTR) e usa i nuovi valori del puntatore durante l'associazione. È impostato su Null per impostazione predefinita.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_BIND_OFFSET_PTR nell'intestazione ARD.
SQL_ATTR_ROW_BIND_TYPE (ODBC 1.0) Valore SQLULEN che imposta l'orientamento dell'associazione da usare quando viene chiamato SQLFetch o SQLFetchScroll nell'istruzione associata. L'associazione a livello di colonna viene selezionata impostando il valore su SQL_BIND_BY_COLUMN. L'associazione per riga viene selezionata impostando il valore sulla lunghezza di una struttura o un'istanza di un buffer in cui verranno associate le colonne dei risultati.

Se viene specificata una lunghezza, deve includere spazio per tutte le colonne associate e qualsiasi spaziatura interna della struttura o del buffer per assicurarsi che quando l'indirizzo di una colonna associata viene incrementato con la lunghezza specificata, il risultato punterà all'inizio della stessa colonna nella riga successiva. Quando si usa l'operatore sizeof con strutture o unioni in ANSI C, questo comportamento è garantito.

L'associazione a livello di colonna è l'orientamento predefinito dell'associazione per SQLFetch e SQLFetchScroll.

Per altre informazioni, vedere Binding columns for Use with Block Cursors.For more information, see Binding Columns for Use with Block Cursors.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_BIND_TYPE nell'intestazione ARD.
SQL_ATTR_ROW_NUMBER (ODBC 2.0) Valore SQLULEN che corrisponde al numero della riga corrente nell'intero set di risultati. Se il numero della riga corrente non può essere determinato o non è presente alcuna riga corrente, il driver restituisce 0.

Questo attributo può essere recuperato da una chiamata a SQLGetStmtAttr ma non impostata da una chiamata a SQLSetStmtAttr.
SQL_ATTR_ROW_OPERATION_PTR (ODBC 3.0) Valore SQLUSMALLINT * che punta a una matrice di valori SQLUSMALLINT usati per ignorare una riga durante un'operazione bulk usando SQLSetPos. Ogni valore è impostato su SQL_ROW_PROCEED (per la riga da includere nell'operazione bulk) o SQL_ROW_IGNORE (per la riga da escludere dall'operazione bulk). Non è possibile ignorare le righe usando questa matrice durante le chiamate a SQLBulkOperations.

Questo attributo di istruzione può essere impostato su un puntatore Null, nel qual caso il driver non restituisce i valori di stato della riga. Questo attributo può essere impostato in qualsiasi momento, ma il nuovo valore non viene usato fino alla successiva chiamata di SQLSetPos .

Per altre informazioni, vedere Aggiornamento di righe nel set di righe con SQLSetPos ed eliminazione di righe nel set di righe con SQLSetPos.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_ARRAY_STATUS_PTR nel ARD.
SQL_ATTR_ROW_STATUS_PTR (ODBC 3.0) Valore SQLUSMALLINT * che punta a una matrice di valori SQLUSMALLINT contenenti i valori di stato della riga dopo una chiamata a SQLFetch o SQLFetchScroll. La matrice include tutti gli elementi presenti nel set di righe.

Questo attributo di istruzione può essere impostato su un puntatore Null, nel qual caso il driver non restituisce i valori di stato della riga. Questo attributo può essere impostato in qualsiasi momento, ma il nuovo valore non viene usato fino alla successiva chiamata di SQLBulkOperations, SQLFetch, SQLFetchScroll o SQLSetPos .

Per altre informazioni, vedere Numero di righe recuperate e stato.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_ARRAY_STATUS_PTR nell'intestazione IRD.

Questo attributo è mappato da un driver ODBC 2.x alla matrice rgbRowStatus in una chiamata a SQLExtendedFetch.
SQL_ATTR_ROWS_FETCHED_PTR (ODBC 3.0) Valore SQLULEN * che punta a un buffer in cui restituire il numero di righe recuperate dopo una chiamata a SQLFetch o SQLFetchScroll, il numero di righe interessate da un'operazione bulk eseguita da una chiamata a SQLSetPos con un argomento Operation di SQL_REFRESH oppure il numero di righe interessate da un'operazione bulk eseguita da SQLBulkOperations. Questo numero include righe di errore.

Per altre informazioni, vedere Numero di righe recuperate e stato.

L'impostazione di questo attributo di istruzione imposta il campo SQL_DESC_ROWS_PROCESSED_PTR nell'intestazione IRD.

Se la chiamata a SQLFetch o SQLFetchScroll che riempie il buffer a cui punta questo attributo non restituisce SQL_SUCCESS o SQL_SUCCESS_WITH_INFO, il contenuto del buffer non è definito.
SQL_ATTR_SIMULATE_CURSOR (ODBC 2.0) Valore SQLULEN che specifica se i driver che simulano istruzioni di aggiornamento ed eliminazione posizionate garantiscono che tali istruzioni influiscano su una sola riga.

Per simulare istruzioni di aggiornamento ed eliminazione posizionate, la maggior parte dei driver costruisce un'istruzione UPDATE o DELETE ricercata contenente una clausola WHERE che specifica il valore di ogni colonna nella riga corrente. A meno che queste colonne non costituiscono una chiave univoca, tale istruzione può influire su più righe.

Per garantire che tali istruzioni influiscano su una sola riga, il driver determina le colonne in una chiave univoca e aggiunge queste colonne al set di risultati. Se un'applicazione garantisce che le colonne nel set di risultati costituiscono una chiave univoca, il driver non deve farlo. Ciò può ridurre il tempo di esecuzione.

SQL_SC_NON_UNIQUE = Il driver non garantisce che le istruzioni di aggiornamento o eliminazione posizionate simulate influiscano su una sola riga; è responsabilità dell'applicazione farlo. Se un'istruzione influisce su più righe, SQLExecute, SQLExecDirect o SQLSetPos restituisce SQLSTATE 01001 (conflitto dell'operazione di cursore).

SQL_SC_TRY_UNIQUE = Il driver tenta di garantire che le istruzioni di aggiornamento o eliminazione posizionate simulate influiscano su una sola riga. Il driver esegue sempre tali istruzioni, anche se potrebbero influire su più righe, ad esempio quando non è presente una chiave univoca. Se un'istruzione influisce su più righe, SQLExecute, SQLExecDirect o SQLSetPos restituisce SQLSTATE 01001 (conflitto dell'operazione di cursore).

SQL_SC_UNIQUE = Il driver garantisce che le istruzioni di aggiornamento o eliminazione posizionate simulate influiscano su una sola riga. Se il driver non può garantire questa operazione per una determinata istruzione, SQLExecDirect o SQLPrepare restituisce un errore.

Se l'origine dati fornisce il supporto SQL nativo per le istruzioni di aggiornamento ed eliminazione posizionate e il driver non simula i cursori, SQL_SUCCESS viene restituito quando SQL_SC_UNIQUE viene richiesto per SQL_SIMULATE_CURSOR. SQL_SUCCESS_WITH_INFO viene restituito se viene richiesto SQL_SC_TRY_UNIQUE o SQL_SC_NON_UNIQUE. Se l'origine dati fornisce il livello di supporto SQL_SC_TRY_UNIQUE e il driver non lo fa, viene restituito SQL_SUCCESS per SQL_SC_TRY_UNIQUE e SQL_SUCCESS_WITH_INFO viene restituito per SQL_SC_NON_UNIQUE.

Se il tipo di simulazione cursore specificato non è supportato dall'origine dati, il driver sostituisce un tipo di simulazione diverso e restituisce SQLSTATE 01S02 (valore opzione modificato). Per SQL_SC_UNIQUE, il conducente sostituisce, in ordine, SQL_SC_TRY_UNIQUE o SQL_SC_NON_UNIQUE. Per SQL_SC_TRY_UNIQUE, il conducente sostituisce SQL_SC_NON_UNIQUE.

Il valore predefinito è SQL_SC_UNIQUE.

Per altre informazioni, vedere Simulazione di istruzioni di aggiornamento ed eliminazione posizionate.
SQL_ATTR_USE_BOOKMARKS (ODBC 2.0) Valore SQLULEN che specifica se un'applicazione userà segnalibri con un cursore:

SQL_UB_OFF = Disattivato (impostazione predefinita)

SQL_UB_VARIABLE = Un'applicazione userà segnalibri con un cursore e il driver fornirà segnalibri a lunghezza variabile, se supportati. SQL_UB_FIXED è deprecato in ODBC 3.x. Le applicazioni ODBC 3.x devono usare sempre segnalibri a lunghezza variabile, anche quando si usano driver ODBC 2.x (che supportano solo segnalibri a lunghezza fissa a 4 byte). Questo perché un segnalibro a lunghezza fissa è solo un caso speciale di un segnalibro a lunghezza variabile. Quando si usa un driver ODBC 2.x , Gestione driver esegue il mapping SQL_UB_VARIABLE a SQL_UB_FIXED.

Per usare i segnalibri con un cursore, l'applicazione deve specificare questo attributo con il valore SQL_UB_VARIABLE prima di aprire il cursore.

Per altre informazioni, vedere Recupero di segnalibri.

[1] Queste funzioni possono essere chiamate in modo asincrono solo se il descrittore è un descrittore di implementazione, non un descrittore dell'applicazione.

Vedere Associazione a livello di colonna e binding per riga.

Per informazioni su Vedere
Annullamento dell'elaborazione delle istruzioni Funzione SQLCancel
Restituzione dell'impostazione di un attributo di connessione Funzione SQLGetConnectAttr
Restituzione dell'impostazione di un attributo di istruzione Funzione SQLGetStmtAttr
Impostazione di un attributo di connessione Funzione SQLSetConnectAttr
Impostazione di un singolo campo del descrittore Funzione SQLSetDescField

Vedi anche

Riferimento API ODBC
File di intestazione ODBC