Funzione SQLGetStmtAttr
Conformità
Versione introdotta: Conformità agli standard ODBC 3.0: ISO 92
Riepilogo
SQLGetStmtAttr restituisce l'impostazione corrente di un attributo di istruzione.
Nota
Per altre informazioni su ciò che Gestione driver esegue il mapping di questa funzione a quando un ODBC 3.L'applicazione x funziona con odbc 2.x driver, vedere Mapping di funzioni di sostituzione per la compatibilità con le versioni precedenti delle applicazioni.
Sintassi
SQLRETURN SQLGetStmtAttr(
SQLHSTMT StatementHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
Argomenti
StatementHandle
[Input] Handle di istruzione.
Attributo
[Input] Attributo da recuperare.
ValuePtr
[Output] Puntatore a un buffer in cui restituire il valore dell'attributo specificato in Attribute.
Se ValuePtr è NULL, StringLengthPtr restituirà comunque il numero totale di byte (escluso il carattere di terminazione null per i dati di tipo carattere) da restituire nel buffer a cui punta ValuePtr.
BufferLength
[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, BufferLength viene ignorato. Se il valore restituito in *ValuePtr è una stringa Unicode (quando si chiama SQLGetStmtAttrW), l'argomento BufferLength deve essere un numero pari.
Se Attribute è un attributo definito dal driver, l'applicazione indica la natura dell'attributo a Gestione driver impostando l'argomento BufferLength . BufferLength può avere i valori seguenti:
Se *ValuePtr è un puntatore a una stringa di caratteri, BufferLength è 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 BufferLength. In questo modo viene impostato un valore negativo in BufferLength.
Se *ValuePtr è un puntatore a un valore diverso da una stringa di caratteri o una stringa binaria, BufferLength deve avere il valore SQL_IS_POINTER.
Se *ValuePtr contiene un tipo di dati a lunghezza fissa, BufferLength è SQL_IS_INTEGER o SQL_IS_UINTEGER, in base alle esigenze.
StringLengthPtr
[Output] Puntatore a un buffer in cui restituire il numero totale di byte (escluso il carattere di terminazione Null) da restituire in *ValuePtr. Se il valore dell'attributo è una stringa di caratteri e il numero di byte disponibili per la restituzione è maggiore o uguale a BufferLength, i dati in *ValuePtr vengono troncati a BufferLength meno la lunghezza di un carattere di terminazione Null e terminano con null dal driver.
Resi
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR o SQL_INVALID_HANDLE.
Diagnostica
Quando SQLGetStmtAttr restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, è possibile ottenere un valore SQLSTATE associato chiamando SQLGetDiagRec con handleTypedi SQL_HANDLE_STMT e handle di StatementHandle. La tabella seguente elenca i valori SQLSTATE comunemente restituiti da SQLGetStmtAttr 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. |
01004 | Dati stringa, troncati a destra | I dati restituiti in *ValuePtr sono stati troncati per essere BufferLength meno la lunghezza di un carattere di terminazione Null. La lunghezza del valore stringa non troncata viene restituita in *StringLengthPtr. (La funzione restituisce SQL_SUCCESS_WITH_INFO. |
24000 | Stato del cursore non valido | L'argomento Attribute è stato SQL_ATTR_ROW_NUMBER e il cursore non è stato aperto oppure il cursore è stato posizionato prima dell'inizio del set di risultati o dopo la fine del set di risultati. |
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 nell'argomento 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. |
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 SQLGetStmtAttr . (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. |
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. |
HY090 | Lunghezza della stringa o del buffer non valida | (DM) *ValuePtr è una stringa di caratteri e BufferLength è minore di zero, ma non uguale a SQL_NTS. |
HY092 | Identificatore di attributo/opzione non valido | Il valore specificato per l'argomento Attribute non è valido per la versione di ODBC supportata dal driver. |
HY109 | Posizione del cursore non valida | L'argomento Attribute è stato SQL_ATTR_ROW_NUMBER e la riga è stata eliminata o non è stato possibile recuperare. |
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 è supportato dal driver. |
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 corrispondente a StatementHandle non supporta la funzione. |
Commenti
Per informazioni generali sugli attributi delle istruzioni, vedere Attributi istruzione.
Una chiamata a SQLGetStmtAttr restituisce in *ValuePtr il valore dell'attributo di istruzione specificato in Attribute. Tale valore può essere un valore SQLULEN o una stringa di caratteri con terminazione Null. Se il valore è un valore SQLULEN, alcuni driver possono scrivere solo il bit inferiore a 32 bit o 16 bit di un buffer e lasciare invariato il bit di ordine superiore. Pertanto, le applicazioni devono usare un buffer di SQLULEN e inizializzare il valore su 0 prima di chiamare questa funzione. Inoltre, gli argomenti BufferLength e StringLengthPtr non vengono utilizzati. Se il valore è una stringa con terminazione Null, l'applicazione specifica la lunghezza massima di tale stringa nell'argomento BufferLength e il driver restituisce la lunghezza di tale stringa nel buffer *StringLengthPtr .
Per consentire alle applicazioni che chiamano SQLGetStmtAttr di usare ODBC 2.x drivers, viene mappata una chiamata a SQLGetStmtAttr in Gestione driver a SQLGetStmtOption.
Gli attributi di istruzione seguenti sono di sola lettura, quindi possono essere recuperati da SQLGetStmtAttr, ma non impostati da SQLSetStmtAttr:
SQL_ATTR_IMP_PARAM_DESC
SQL_ATTR_IMP_ROW_DESC
SQL_ATTR_ROW_NUMBER
Per un elenco di attributi che possono essere impostati e recuperati, vedere SQLSetStmtAttr.
Funzioni correlate
Per informazioni su | Vedere |
---|---|
Restituzione dell'impostazione di un attributo di connessione | Funzione SQLGetConnectAttr |
Impostazione di un attributo di connessione | Funzione SQLSetConnectAttr |
Impostazione di un attributo di istruzione | Funzione SQLSetStmtAttr |