Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Överensstämmelse
Version introducerad: ODBC 3.0 Standardsefterlevnad: ISO 92
Summary
SQLGetDescRec returnerar aktuella inställningar eller värden för flera fält i en deskriptorpost. De fält som returneras beskriver namn, datatyp och lagring av kolumn- eller parameterdata.
Syntax
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] Beskrivningshandtag.
RecNumber
[Input] Anger deskriptorposten från vilken ansökan söker information. Beskrivande poster numreras från 1, där post nummer 0 är bokmärkesposten.
RecNumber-argumentet måste vara mindre än eller lika med värdet av SQL_DESC_COUNT. Om RecNumber är mindre än eller lika med SQL_DESC_COUNT men raden inte innehåller data för en kolumn eller parameter, kommer ett anrop till SQLGetDescRec att returnera standardvärdena för fälten. (För mer information, se "Initialisering av deskriptorfält" i SQLSetDescField.)
Namn
[Utdata] En pekare till en buffert där man returnerar det SQL_DESC_NAME fältet för deskriptorposten.
Om Name är NULL kommer StringLengthPtr ändå att returnera det totala antalet tecken (exklusive null-termineringstecknet för teckendata) som finns tillgängliga att returnera i bufferten som Namn pekar på.
BufferLength
[Input] Längden på *Namnbufferten , i tecken.
StringLengthPtr
[Utdata] En pekare till en buffert där antalet tecken data som finns tillgängligt för att returnera i *Namn-bufferten , exklusive null-termineringstecknet. Om antalet tecken var större än eller lika med BufferLength, trunkeras datan i *Name till BufferLength minus längden på ett nulltermineringstecken, och den nulltermineras av drivrutinen.
TypePtr
[Utdata] En pekare till en buffert där värdet av det SQL_DESC_TYPE fältet för deskriptorposten ska returneras.
SubTypePtr
[Utdata] För poster vars typ är SQL_DATETIME eller SQL_INTERVAL är detta en pekare till en buffert där värdet av SQL_DESC_DATETIME_INTERVAL_CODE fältet kan returneras.
LengthPtr
[Utdata] En pekare till en buffert där värdet av fältet SQL_DESC_OCTET_LENGTH returneras för deskriptorposten.
PrecisionPtr
[Utdata] En pekare till en buffert där värdet av SQL_DESC_PRECISION fältet för deskriptorposten returneras.
ScalePtr
[Utdata] En pekare till en buffert där värdet av fältet SQL_DESC_SCALE returneras för deskriptorposten.
NullablePtr
[Utdata] En pekare till en buffert där värdet av det SQL_DESC_NULLABLE fältet för deskriptorposten ska returneras.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_NO_DATA eller SQL_INVALID_HANDLE.
SQL_NO_DATA returneras om RecNumber är större än det aktuella antalet deskriptorposter.
SQL_NO_DATA returneras om DescriptorHandle är ett IRD-handtag och satsen är i förberedd eller exekverad status men ingen öppen markör var kopplad till den.
Diagnostics
När SQLGetDescRec returnerar SQL_ERROR eller SQL_SUCCESS_WITH_INFO kan ett associerat SQLSTATE-värde erhållas genom att anropa SQLGetDiagRec med en HandleType av SQL_HANDLE_DESC och ett Handle av DescriptorHandle. Följande tabell listar de SQLSTATE-värden som vanligtvis returneras av SQLGetDescRec och förklarar var och en i kontexten av denna funktion; notationen "(DM)" föregår beskrivningarna av SQLSTATE som returneras av Driver Manager. Returkoden som är associerad med varje SQLSTATE-värde är SQL_ERROR, om inget annat anges.
| SQLSTATE | Error | Beskrivning |
|---|---|---|
| 01000 | Allmän varning | Informationsmeddelande för drivrutinsspecifikt. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.) |
| 01004 | Strängdata, höger trunkerade | Bufferten *Name var inte tillräckligt stor för att returnera hela beskrivarfältet. Därför förkortades fältet. Längden på det otrunkerade deskriptorfältet returneras i *StringLengthPtr. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.) |
| 07009 | Ogiltigt deskriptorindex |
FieldIdentifier-argumentet var ett postfält, RecNumber-argumentet var satt till 0, och DescriptorHandle-argumentet var ett IPD-handtag. (DM) RecNumber-argumentet sattes till 0, och attributet SQL_ATTR_USE_BOOKMARKS satsen sattes till SQL_UB_OFF, och DescriptorHandle-argumentet var ett IRD-handtag. RecNumber-argumentet var mindre än 0. |
| 08S01 | Kommunikationslänkfel | Kommunikationslänken mellan drivrutinen och datakällan som drivrutinen var ansluten till misslyckades innan funktionen slutförde bearbetningen. |
| HY000 | Allmänt fel | Ett fel uppstod för vilket det inte fanns någon specifik SQLSTATE och för vilken ingen implementeringsspecifik SQLSTATE definierades. Felmeddelandet som returnerades av SQLGetDiagRec i *MessageText-bufferten beskriver felet och dess orsak. |
| HY001 | Fel vid minnesallokering | Drivrutinen kunde inte allokera det minne som krävs för att stödja exekvering eller slutförande av funktionen. |
| HY007 | Tillhörande uttalande är inte förberett | DescriptorHandle var kopplat till en IRD, och det tillhörande statementhandtaget var inte i förberedd eller utförd status. |
| HY010 | Funktionssekvensfel | (DM) DescriptorHandle var kopplat till en StatementHandle för vilken en asynkront exekverande funktion (inte denna) anropades och fortfarande kördes när denna funktion anropades. (DM) DescriptorHandle var kopplat till ett StatementHandle för vilket SQLExecute, SQLExecDirect, SQLBulkOperations eller SQLSetPos anropades och returnerades SQL_NEED_DATA. Den här funktionen anropades innan data skickades för alla data-at-execution-parametrar eller kolumner. (DM) En asynkront exekverande funktion anropades för anslutningshandtaget som är associerat med DescriptorHandle. Denna asynkrona funktion kördes fortfarande när SQLGetDescRec anropades. |
| HY013 | Minneshanteringsfel | Det gick inte att bearbeta funktionsanropet eftersom det inte gick att komma åt underliggande minnesobjekt, möjligen på grund av minnesbrist. |
| HY117 | Anslutningen pausas på grund av okänt transaktionstillstånd. Endast frånkopplings- och skrivskyddade funktioner tillåts. | (DM) Mer information om pausat tillstånd finns i SQLEndTran-funktion. |
| HYT01 | Tidsgränsen för anslutningen gick ut | Tidsgränsen för anslutningen löpte ut innan datakällan svarade på begäran. Tidsgränsen för anslutningen anges via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Drivrutinen stöder inte den här funktionen | (DM) Drivrutinen som är kopplad till DescriptorHandle stöder inte funktionen. |
Comments
En applikation kan anropa SQLGetDescRec för att hämta värdena för följande deskriptorfält för en enda kolumn eller parameter:
SQL_DESC_NAME
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE (för poster vars typ är SQL_DATETIME eller SQL_INTERVAL)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_NULLABLE
SQLGetDescRec hämtar inte värdena för headerfälten.
En applikation kan förhindra att ett fälts inställning återvänder genom att sätta argumentet som motsvarar fältet till en nullpekare.
När en applikation anropar SQLGetDescRec för att hämta värdet av ett fält som är odefinierat för en viss deskriptortyp, returnerar funktionen SQL_SUCCESS men värdet som returneras för fältet är odefinierat. Till exempel, om man anropar SQLGetDescRec för SQL_DESC_NAME eller SQL_DESC_NULLABLE fält i en APD eller ARD kommer SQL_SUCCESS men ett odefinierat värde för fältet att returnera.
När en applikation anropar SQLGetDescRec för att hämta värdet av ett fält som är definierat för en viss deskriptortyp men som inte har något standardvärde och ännu inte har satts, returnerar funktionen SQL_SUCCESS men värdet som returneras för fältet är odefinierat. För mer information, se "Initialisering av deskriptorfält" i SQLSetDescField.
Fältens värden kan också hämtas individuellt genom ett anrop till SQLGetDescField. För en beskrivning av fälten i en beskrivande header eller post, se SQLSetDescField. Mer information om deskriptorer finns i Beskrivningar.
Relaterade funktioner
| Mer information om | Se |
|---|---|
| Bindning av en kolumn | SQLBindCol-funktion |
| Bindning av en parameter | SQLBindParameter-funktionen |
| Att få ett deskriptorfält | SQLGetDescField-funktionen |
| Inställning av flera beskrivande fält | SQLSetDescRec-funktionen |