SQLGetDescRec-funktion

Ö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.

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