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
SQLGetDescRec restituisce le impostazioni o i valori attuali di più campi di un record descrittore. I campi restituiti descrivono il nome, il tipo di dato e la memorizzazione dei dati di colonne o parametri.
Sintassi
SQLRETURN SQLGetDescRec(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLCHAR * Name,
SQLSMALLINT BufferLength,
SQLSMALLINT * StringLengthPtr,
SQLSMALLINT * TypePtr,
SQLSMALLINT * SubTypePtr,
SQLLEN * LengthPtr,
SQLSMALLINT * PrecisionPtr,
SQLSMALLINT * ScalePtr,
SQLSMALLINT * NullablePtr);
Arguments
DescriptorHandle
[Input] Handle descrittore.
RecNumber
[Input] Indica il registro descrittore da cui la domanda cerca informazioni. I record descrittori sono numerati da 1, con il record numero 0 che rappresenta il record segnalibro. L'argomento RecNumber deve essere minore o uguale al valore di SQL_DESC_COUNT. Se RecNumber è minore o uguale a SQL_DESC_COUNT ma la riga non contiene dati per una colonna o parametro, una chiamata a SQLGetDescRec restituirà i valori predefiniti dei campi. (Per ulteriori informazioni, vedi "Inizializzazione dei Campi Descrittori" in SQLSetDescField.)
Nome
[Output] Un puntatore a un buffer in cui restituire il campo SQL_DESC_NAME per il record descrittore.
Se Name è NULL, StringLengthPtr restituirà comunque il numero totale di caratteri (escluso il carattere di null-termination per i dati dei caratteri) disponibili da restituire nel buffer indicato per Name.
BufferLength
[Input] Lunghezza del buffer *Nome , in caratteri.
StringLengthPtr
[Output] Un puntatore a un buffer in cui restituire il numero di caratteri di dati disponibili da restituire nel buffer *Name , escludendo il carattere di terminazione nulla. Se il numero di caratteri era maggiore o uguale a BufferLength, i dati in *Name vengono troncati a BufferLength meno la lunghezza di un carattere a null-termination, e vengono null-terminati dal driver.
TypePtr
[Output] Un puntatore a un buffer in cui restituire il valore del campo SQL_DESC_TYPE per il record descrittore.
SubTypePtr
[Output] Per i record il cui tipo è SQL_DATETIME o SQL_INTERVAL, questo è un puntatore a un buffer in cui restituire il valore del campo SQL_DESC_DATETIME_INTERVAL_CODE.
LengthPtr
[Output] Un puntatore a un buffer in cui restituire il valore del campo SQL_DESC_OCTET_LENGTH per il record descrittore.
PrecisionPtr
[Output] Un puntatore a un buffer in cui restituire il valore del campo SQL_DESC_PRECISION per il record descrittore.
ScalePtr
[Output] Un puntatore a un buffer in cui restituire il valore del campo SQL_DESC_SCALE per il record descrittore.
NullablePtr
[Output] Un puntatore a un buffer in cui restituire il valore del campo SQL_DESC_NULLABLE per il record descrittore.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_NO_DATA o SQL_INVALID_HANDLE.
SQL_NO_DATA viene restituito se RecNumber è maggiore del numero attuale di record descrittori.
SQL_NO_DATA viene restituito se DescriptorHandle è un handle IRD e l'istruzione è nello stato preparato o eseguito ma non c'era un cursore aperto associato.
Diagnostica
Quando SQLGetDescRec restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, un valore SQLSTATE associato può essere ottenuto chiamando SQLGetDiagRec con un HandleType di SQL_HANDLE_DESC e un Handle di DescriptorHandle. La tabella seguente elenca i valori SQLSTATE tipicamente restituiti da SQLGetDescRec e spiega ciascuno 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 | Il buffer *Name non era abbastanza grande da restituire l'intero campo descrittore. Pertanto, il campo fu troncato. La lunghezza del campo descrittore non runcato viene restituita in *StringLengthPtr. (La funzione restituisce SQL_SUCCESS_WITH_INFO. |
| 07009 | Indice descrittore non valido | L'argomento FieldIdentifier era un campo di record, l'argomento RecNumber era impostato a 0, e l'argomento DescriptorHandle era un handle IPD. (DM) L'argomento RecNumber era impostato a 0, e l'attributo di istruzione SQL_ATTR_USE_BOOKMARKS era impostato a SQL_UB_OFF, e l'argomento DescriptorHandle era un handle IRD. L'argomento del RecNumber era inferiore a 0. |
| 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. |
| 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 era in grado di allocare la memoria necessaria per supportare l'esecuzione o il completamento della funzione. |
| HY007 | Istruzione associata non preparata | DescriptorHandle era associato a un IRD, e il handle associato all'istruzione non era nello stato preparato o eseguito. |
| HY010 | Errore della sequenza di funzioni | (DM) DescriptorHandle era associato a un StatementHandle per cui veniva chiamata una funzione asincrona (non questa) e continuava a essere eseguita quando questa funzione veniva chiamata. (DM) DescriptorHandle era associato a un StatementHandle per cui venivano chiamati e restituiti SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos SQL_NEED_DATA. Questa funzione è stata chiamata prima dell'invio dei dati per tutti i parametri o le colonne data-at-execution. (DM) Una funzione a esecuzione asincrona veniva chiamata per il handle di connessione associato al DescriptorHandle. Questa funzione asincrona era ancora in esecuzione quando veniva chiamato SQLGetDescRec . |
| 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. |
| 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. |
| 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 DescriptorHandle non supporta questa funzione. |
Comments
Un'applicazione può chiamare SQLGetDescRec per recuperare i valori dei seguenti campi descrittori per una singola colonna o parametro:
SQL_DESC_NAME
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE (per documenti il cui tipo è SQL_DATETIME o SQL_INTERVAL)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_NULLABLE
SQLGetDescRec non recupera i valori dei campi di header.
Un'applicazione può impedire il ritorno dell'impostazione di un campo impostando l'argomento corrispondente al campo a un puntatore nullo.
Quando un'applicazione chiama SQLGetDescRec per recuperare il valore di un campo indefinito per un particolare tipo di descrittore, la funzione restituisce SQL_SUCCESS ma il valore restituito per il campo è indefinito. Ad esempio, chiamare SQLGetDescRec per il campo SQL_DESC_NAME o SQL_DESC_NULLABLE di un APD o ARD restituirà SQL_SUCCESS ma un valore indefinito per il campo.
Quando un'applicazione chiama SQLGetDescRec per recuperare il valore di un campo definito per un particolare tipo di descrittore ma che non ha un valore predefinito e non è ancora stato impostato, la funzione restituisce SQL_SUCCESS ma il valore restituito per il campo non è definito. Per ulteriori informazioni, vedi "Inizializzazione dei Campi Descrittori" in SQLSetDescField.
I valori dei campi possono anche essere recuperati singolarmente tramite una chiamata a SQLGetDescField. Per una descrizione dei campi in un'intestazione o un record di descrittore, vedi SQLSetDescField. Per altre informazioni sui descrittori, vedere Descrittori.
Funzioni correlate
| Per informazioni su | Vedi |
|---|---|
| Legare una colonna | Funzione SQLBindCol |
| Legare un parametro | Funzione SQLBindParameter |
| Ottenere un campo descrittore | Funzione SQLGetDescField |
| Impostazione di campi descrittori multipli | Funzione SQLSetDescRec |