Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Conformità
Versione introdotta: Conformità agli standard ODBC 3.0: ISO 92
Sommario
SQLGetStmtAttr restituisce l'impostazione corrente di un attributo di un'istruzione.
Note
Per maggiori informazioni su cosa mappa questa funzione il Driver Manager quando si tratta di un ODBC 3. L'applicazione x funziona con un ODBC 2. driver x , vedi Mappatura delle funzioni di sostituzione per la retrocompatibilità delle applicazioni.
Sintassi
SQLRETURN SQLGetStmtAttr(
SQLHSTMT StatementHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
Arguments
StatementHandle
[Input] Handle di istruzione.
Attributo
[Input] Attribuisce per recuperare.
ValuePtr
[Output] Punta a un buffer in cui restituire il valore dell'attributo specificato in Attributo.
Se ValuePtr è NULL, StringLengthPtr restituirà comunque il numero totale di byte (escluso il carattere di null-termination per i dati del carattere) disponibili nel buffer indicato da 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 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 l'Attributo è definito dal driver, l'applicazione indica la natura dell'attributo al Driver Manager impostando l'argomento BufferLength . BufferLength può avere i seguenti valori:
Se *ValuePtr è un puntatore a una stringa di carattere, allora BufferLength è la lunghezza della stringa o della SQL_NTS.
Se *ValuePtr è un puntatore a un buffer binario, allora l'applicazione inserisce il risultato della macro SQL_LEN_BINARY_ATTR(length) in BufferLength. Questo attribuisce un valore negativo a BufferLength.
Se *ValuePtr è un puntatore a un valore diverso da una stringa di carattere o binaria, allora BufferLength dovrebbe avere il valore SQL_IS_POINTER.
Se *ValuePtr contiene un tipo di dato a lunghezza fissa, allora BufferLength è o SQL_IS_INTEGER o SQL_IS_UINTEGER, a seconda dei conti.
StringLengthPtr
[Output] Un puntatore a un buffer in cui restituire il numero totale di byte (escluso il carattere di terminazione nulla) disponibili da restituire in *ValuePtr. Se il valore dell'attributo è una stringa di caratteri e il numero di byte disponibili da restituire è maggiore o uguale a BufferLength, i dati in *ValuePtr vengono troncati a BufferLength meno la lunghezza di un carattere a null-termination e vengono null-terminati dal driver.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR o SQL_INVALID_HANDLE.
Diagnostica
Quando SQLGetStmtAttr restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, un valore SQLSTATE associato può essere ottenuto chiamando SQLGetDiagRec con un HandleType di SQL_HANDLE_STMT e un Handle di StatementHandle. La tabella seguente elenca i valori SQLSTATE comunemente restituiti da SQLGetStmtAttr e li spiega nel contesto di questa funzione; la notazione "(DM)" precede le descrizioni degli stati SQL restituite dal Driver Manager. Il codice restituito associato a ogni valore SQLSTATE è SQL_ERROR, a meno che non sia specificato diversamente.
| SQLSTATE | Error | Description |
|---|---|---|
| 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 a terminazione nulla. La lunghezza del valore della stringa non runcata viene restituita in *StringLongPtr. (La funzione restituisce SQL_SUCCESS_WITH_INFO. |
| 24000 | Stato del cursore non valido | L'argomento Attributo era SQL_ATTR_ROW_NUMBER e il cursore non era aperto, oppure il cursore era 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 sua 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 veniva 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 era inferiore a zero, ma non uguale a SQL_NTS. |
| HY092 | Identificatore di attributo/opzione invalido | Il valore specificato per l'argomento Attributo non era valido per la versione di ODBC supportata dal driver. |
| HY109 | Posizione del cursore non valida | L'argomento dell'Attributo era SQL_ATTR_ROW_NUMBER e la riga era stata cancellata o non poteva essere recuperata. |
| 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'attributo dell'argomento era un attributo valido di un'istruzione ODBC per la versione di ODBC supportata dal driver, ma non era 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. |
Comments
Per informazioni generali sugli attributi delle dichiarazioni, vedi Attributi delle dichiarazioni.
Una chiamata a SQLGetStmtAttr restituisce in *ValuePtr il valore dell'attributo dell'istruzione specificato in Attributo. Quel valore può essere un valore SQLULEN o una stringa di caratteri terminata a nullo. Se il valore è un valore SQLULEN, alcuni driver possono scrivere solo il buffer inferiore a 32 o 16 bit e lasciare invariato il bit di ordine superiore. Pertanto, le applicazioni dovrebbero utilizzare un buffer di SQLULEN e inizializzare il valore a 0 prima di chiamare questa funzione. Inoltre, gli argomenti BufferLength e StringLengthPtr non vengono utilizzati. Se il valore è una stringa terminata nullo, l'applicazione specifica la lunghezza massima di quella stringa nell'argomento BufferLength , e il driver restituisce la lunghezza di quella stringa nel buffer *StringLengthPtr .
Per permettere alle applicazioni che chiamano SQLGetStmtAttr di lavorare con ODBC 2. x , una chiamata a SQLGetStmtAttr è mappata nel Driver Manager a SQLGetStmtOption.
I seguenti attributi delle istruzioni 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 degli attributi che possono essere impostati e recuperati, vedi SQLSetStmtAttr.
Funzioni correlate
| Per informazioni su | Vedi |
|---|---|
| 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 |