SQLSetDescField functie

Conformiteit
Versie geïntroduceerd: ODBC 3.0 Standaardnaleving: ISO 92

Samenvatting
SQLSetDescField stelt de waarde vast van een enkel veld van een descriptorrecord.

Syntax

SQLRETURN SQLSetDescField(  
     SQLHDESC      DescriptorHandle,  
     SQLSMALLINT   RecNumber,  
     SQLSMALLINT   FieldIdentifier,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    BufferLength);  

Arguments

DescriptorHandle
[Invoer] Descriptor-handvat.

RecNumber
[Invoer] Geeft het descriptorrecord aan dat het veld bevat dat de applicatie wil instellen. Descriptorrecords worden genummerd vanaf 0, waarbij record 0 het bladwijzerrecord is. Het RecNumber-argument wordt genegeerd voor headervelden.

FieldIdentifier
[Invoer] Geeft het veld aan van de descriptor waarvan de waarde moet worden vastgesteld. Voor meer informatie, zie "FieldIdentifier Argument" in de sectie "Commentaren".

ValuePtr
[Invoer] Wijs naar een buffer met de descriptor-informatie, of een geheel getal. Het datatype hangt af van de waarde van FieldIdentifier. Als ValuePtr een geheel getal is, kan deze worden beschouwd als 8 bytes (SQLLEN), 4 bytes (SQLINTEGER) of 2 bytes (SQLSMALLINT), afhankelijk van de waarde van het FieldIdentifier-argument .

BufferLength
[Invoer] Als FieldIdentifier een ODBC-gedefinieerd veld is en ValuePtr wijst naar een tekenreeks of een binaire buffer, zou dit argument de lengte van *ValuePtr moeten zijn. Voor tekenstringgegevens moet dit argument het aantal bytes in de string bevatten.

Als FieldIdentifier een door ODBC gedefinieerd veld is en ValuePtr een geheel getal, wordt BufferLength genegeerd.

Als FieldIdentifier een door een driver gedefinieerd veld is, geeft de applicatie de aard van het veld aan aan de Driver Manager door het BufferLength-argument in te stellen. BufferLength kan de volgende waarden hebben:

  • Als ValuePtr een verwijzing is naar een tekenstring, dan is BufferLength de lengte van de string of SQL_NTS.

  • Als ValuePtr een verwijzing is naar een binaire buffer, plaatst de applicatie het resultaat van de macro SQL_LEN_BINARY_ATTR(lengte) in BufferLength. Dit plaatst een negatieve waarde in BufferLength.

  • Als ValuePtr een verwijzing is naar een waarde die niet een tekenstring of binaire string is, dan zou BufferLength de waarde SQL_IS_POINTER moeten hebben.

  • Als ValuePtr een waarde met vaste lengte bevat, dan is BufferLength ofwel SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT of SQL_IS_USMALLINT, afhankelijk van toepassing.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR of SQL_INVALID_HANDLE.

Diagnostics

Wanneer SQLSetDescField SQL_ERROR of SQL_SUCCESS_WITH_INFO teruggeeft, kan een bijbehorende SQLSTATE-waarde worden verkregen door SQLGetDiagRec aan te roepen met een HandleType van SQL_HANDLE_DESC en een Handle van DescriptorHandle. De volgende tabel geeft een overzicht van de SQLSetDescField-waarden die vaak worden teruggegeven en legt elk uit in de context van deze functie; de notatie "(DM)" gaat vooraf aan de beschrijvingen van SQLSTATES die door de Driver Manager worden teruggegeven. De retourcode die is gekoppeld aan elke SQLSTATE-waarde is SQL_ERROR, tenzij anders vermeld.

SQLSTATE Fout Description
01000 Algemene waarschuwing Stuurprogrammaspecifiek informatiebericht. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
01S02 Optiewaarde gewijzigd De driver ondersteunde de waarde die in *ValuePtr was gespecificeerd (als ValuePtr een pointer was) of de waarde in ValuePtr (als ValuePtr een geheel getal was), of *ValuePtr was ongeldig vanwege de implementatieomstandigheden, dus de driver gebruikte een vergelijkbare waarde. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
07009 Ongeldige descriptorindex Het FieldIdentifier-argument was een recordveld, het RecNumber-argument was 0, en het DescriptorHandle-argument verwees naar een IPD-handvat.

Het RecNumber-argument was minder dan 0, en het DescriptorHandle-argument verwees naar een ARD of een APD.

Het RecNumber-argument was groter dan het maximale aantal kolommen of parameters dat de databron kan ondersteunen, en het DescriptorHandle-argument verwees naar een APD of ARD.

(DM) Het FieldIdentifier-argument was SQL_DESC_COUNT, en het *ValuePtr-argument was kleiner dan 0.

Het RecNumber-argument was gelijk aan 0, en het DescriptorHandle-argument verwees naar een impliciet toegewezen APD. (Deze fout treedt niet op bij een expliciet toegewezen applicatiedescriptor, omdat het niet bekend is of een expliciet toegewezen applicatiedescriptor een APD of ARD is tot de uitvoertijd.)
08S01 Communicatiekoppelingsfout De communicatiekoppeling tussen het stuurprogramma en de gegevensbron waarmee het stuurprogramma is verbonden, is mislukt voordat de verwerking van de functie is voltooid.
22001 Tekenreeksgegevens, rechts afgekapt Het FieldIdentifier-argument was SQL_DESC_NAME, en het BufferLength-argument was een waarde groter dan SQL_MAX_IDENTIFIER_LEN.
HY000 Algemene fout Er is een fout opgetreden waarvoor er geen specifieke SQLSTATE is en waarvoor geen implementatiespecifieke SQLSTATE is gedefinieerd. Het foutbericht dat door SQLGetDiagRec in de *MessageText-buffer wordt geretourneerd, beschrijft de fout en de oorzaak ervan.
HY001 Fout bij geheugentoewijzing Het stuurprogramma kan geen geheugen toewijzen dat nodig is om de uitvoering of voltooiing van de functie te ondersteunen.
HY010 Fout in functiereeks (DM) De DescriptorHandle was gekoppeld aan een StatementHandle waarvoor een asynchroon uitvoerende functie (niet deze) werd aangeroepen en die nog steeds uitvoerde wanneer deze functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations of SQLSetPos werd aangeroepen voor de StatementHandle waarmee de DescriptorHandle was gekoppeld en werd SQL_NEED_DATA teruggegeven. Deze functie is aangeroepen voordat gegevens werden verzonden voor alle parameters of kolommen voor uitvoering van gegevens.

(DM) Er werd een asynchroon uitgevoerde functie aangeroepen voor de verbindingshandle die is gekoppeld aan de DescriptorHandle. Deze asynchrone functie werd nog uitgevoerd toen de SQLSetDescField-functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect of SQLMoreResults werd aangeroepen voor een van de instructiehandvatten die bij DescriptorHandle hoorden en SQL_PARAM_DATA_AVAILABLE teruggestuurd. Deze functie is aangeroepen voordat gegevens zijn opgehaald voor alle gestreamde parameters.
HY013 Fout bij geheugenbeheer De functie-aanroep kan niet worden verwerkt omdat de onderliggende geheugenobjecten niet kunnen worden geopend, mogelijk vanwege weinig geheugen.
HY016 Kan een implementatie-rijdescriptor niet wijzigen Het DescriptorHandle-argument was gekoppeld aan een IRD, en het FieldIdentifier-argument was niet SQL_DESC_ARRAY_STATUS_PTR of SQL_DESC_ROWS_PROCESSED_PTR.
HY021 Inconsistente beschrijvingsinformatie De velden SQL_DESC_TYPE en SQL_DESC_DATETIME_INTERVAL_CODE vormen geen geldig ODBC SQL-type of een geldig driver-specifiek SQL-type (voor IPD's) of een geldig ODBC C-type (voor APD's of ARD's).

De informatie van de beschrijvende gegevens die tijdens een consistentiecontrole werd gecontroleerd, was niet consistent. (Zie "Consistentiecontrole" in SQLSetDescRec.)
HY090 Ongeldige tekenreeks- of bufferlengte (DM) *ValuePtr is een tekenstring, en BufferLength was minder dan nul maar niet gelijk aan SQL_NTS.

(DM) De driver was een ODBC 2*.x* driver, de descriptor was een ARD, het ColumnNumber-argument stond op 0, en de waarde die voor het argument BufferLength werd gespecificeerd was niet gelijk aan 4.
HY091 Ongeldige descriptorveldidentificatie De waarde die voor het FieldIdentifier-argument werd gespecificeerd, was geen ODBC-gedefinieerd veld en geen implementatie-gedefinieerde waarde.

Het FieldIdentifier-argument was ongeldig voor het DescriptorHandle-argument .

Het FieldIdentifier-argument was een alleen-lezen, door ODBC gedefinieerd veld.
HY092 Ongeldige attribuut/optie-identificatie De waarde in *ValuePtr was niet geldig voor het FieldIdentifier-argument .

Het FieldIdentifier-argument was SQL_DESC_UNNAMED en ValuePtr was SQL_NAMED.
HY105 Ongeldig parametertype (DM) De waarde die voor het veld SQL_DESC_PARAMETER_TYPE werd gespecificeerd, was ongeldig. (Voor meer informatie, zie de sectie "InputOutputType Argument" in SQLBindParameter.)
HY117 De verbinding is onderbroken vanwege een onbekende transactiestatus. Alleen de verbinding verbreken en alleen-lezenfuncties zijn toegestaan. (DM) Voor meer informatie over de opgeschortte staat, zie What's New in ODBC 3.8.
HYT01 Time-out voor de verbinding is overschreden De time-outperiode voor de verbinding is verlopen voordat de gegevensbron op de aanvraag heeft gereageerd. De time-outperiode voor de verbinding wordt ingesteld via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Stuurprogramma biedt geen ondersteuning voor deze functie (DM) De driver die aan de DescriptorHandle is gekoppeld, ondersteunt de functie niet.

Comments

Een applicatie kan SQLSetDescField aanroepen om elk descriptorveld één voor één in te stellen. Eén aanroep naar SQLSetDescField zet één veld in één enkele descriptor. Deze functie kan worden aangeroepen om elk veld in elk descriptortype te zetten, mits het veld kan worden ingesteld. (Zie de tabel later in deze sectie.)

Note

Als een aanroep naar SQLSetDescField faalt, zijn de inhoud van het descriptorrecord dat door het RecNumber-argument is geïdentificeerd, niet gedefinieerd.

Andere functies kunnen worden aangeroepen om meerdere descriptorvelden in te stellen met één aanroep van de functie. De SQLSetDescRec-functie stelt een verscheidenheid aan velden in die het datatype en de buffergrens aan een kolom of parameter beïnvloeden (de velden SQL_DESC_TYPE, SQL_DESC_DATETIME_INTERVAL_CODE, SQL_DESC_OCTET_LENGTH, SQL_DESC_PRECISION, SQL_DESC_SCALE, SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR en SQL_DESC_INDICATOR_PTR). SQLBindCol of SQLBindParameter kan worden gebruikt om een volledige specificatie te maken voor de binding van een kolom of parameter. Deze functies stellen een specifieke groep descriptorvelden in met één functieaanroep.

SQLSetDescField kan worden aangeroepen om de bindingsbuffers te wijzigen door een offset toe te voegen aan de bindingspointers (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR of SQL_DESC_OCTET_LENGTH_PTR). Dit verandert de bindingsbuffers zonder SQLBindCol of SQLBindParameter aan te roepen, waardoor een applicatie SQL_DESC_DATA_PTR kan wijzigen zonder andere velden, zoals SQL_DESC_DATA_TYPE, te wijzigen.

Als een applicatie SQLSetDescField aanroept om een ander veld dan SQL_DESC_COUNT of de uitgestelde velden SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR of SQL_DESC_INDICATOR_PTR in te stellen, wordt het record onbegrensd.

Descriptor-headervelden worden ingesteld door SQLSetDescField aan te roepen met de juiste FieldIdentifier. Veel headervelden zijn ook statement-attributen, dus ze kunnen ook worden ingesteld door een aanroep naar SQLSetStmtAttr. Dit stelt applicaties in staat een descriptorveld in te stellen zonder eerst een descriptorhandle te verkrijgen. Wanneer SQLSetDescField wordt aangeroepen om een headerveld in te stellen, wordt het RecNumber-argument genegeerd.

Een RecNumber van 0 wordt gebruikt om bladwijzervelden in te stellen.

Note

Het statement-attribuut SQL_ATTR_USE_BOOKMARKS moet altijd worden ingesteld voordat SQLSetDescField wordt aangeroepen om bladwijzervelden in te stellen. Hoewel dit niet verplicht is, wordt het sterk aanbevolen.

Volgorde van instellingen van descriptorvelden

Bij het instellen van descriptorvelden door SQLSetDescField aan te roepen, moet de applicatie een specifieke volgorde volgen:

  1. De applicatie moet eerst het veld SQL_DESC_TYPE, SQL_DESC_CONCISE_TYPE of SQL_DESC_DATETIME_INTERVAL_CODE instellen.

  2. Nadat een van deze velden is ingesteld, kan de applicatie een attribuut van een datatype instellen, en de driver zet de attribuutvelden van het datatype op de juiste standaardwaarden voor het datatype. Automatische standaardinstelling van type-attribuutvelden zorgt ervoor dat de descriptor altijd klaar is om te gebruiken zodra de applicatie een datatype heeft opgegeven. Als de applicatie expliciet een datatype-attribuut instelt, overschrijft deze het standaardattribuut.

  3. Nadat een van de velden uit stap 1 is ingesteld en datatype-attributen zijn ingesteld, kan de applicatie SQL_DESC_DATA_PTR instellen. Dit vraagt om een consistentiecontrole van descriptorvelden. Als de applicatie het datatype of de attributen verandert na het instellen van het veld SQL_DESC_DATA_PTR, zet de driver SQL_DESC_DATA_PTR op een nullpointer, waardoor het record wordt losgekoppeld. Dit dwingt de applicatie om de juiste stappen achter elkaar te voltooien, voordat het descriptorrecord bruikbaar is.

Initialisatie van descriptorvelden

Wanneer een descriptor wordt toegewezen, kunnen de velden in de descriptor worden geïnitialiseerd tot een standaardwaarde, worden geïnitialiseerd zonder standaardwaarde, of ongedefinieerd zijn voor het type descriptor. De volgende tabellen geven de initialisatie van elk veld voor elk type descriptor aan, waarbij "D" aangeeft dat het veld standaard is geïnitialiseerd, en "ND" aangeeft dat het veld zonder standaard wordt geïnitialiseerd. Als een getal wordt weergegeven, is de standaardwaarde van het veld dat getal. De tabellen geven ook aan of een veld lees-/schrijfbaar (R/W) of alleen-lezen (R) is.

De velden van een IRD hebben een standaardwaarde pas nadat de verklaring is voorbereid of uitgevoerd en de IRD is ingevuld, niet wanneer de statementhandle of descriptor is toegewezen. Totdat de IRD is ingevuld, zal elke poging om toegang te krijgen tot een veld van een IRD een foutmelding opleveren.

Sommige descriptorvelden zijn gedefinieerd voor één of meer, maar niet alle, van de descriptortypes (ARD's en IRD's, en APD's en IPD's). Wanneer een veld ongedefinieerd is voor een type descriptor, is het niet nodig voor een van de functies die die descriptor gebruiken.

De velden die door SQLGetDescField toegankelijk zijn, kunnen niet noodzakelijkerwijs worden ingesteld door SQLSetDescField. Velden die door SQLSetDescField kunnen worden ingesteld, worden in de volgende tabellen vermeld.

De initialisatie van headervelden wordt weergegeven in de volgende tabel.

Naam van het headerveld Type R/W Verstek
SQL_DESC_ALLOC_TYPE SQLSMALLINT ARD: R APD: R IRD: R IPD: R ARD: SQL_DESC_ALLOC_AUTO voor impliciet of SQL_DESC_ALLOC_USER voor expliciet

APD: SQL_DESC_ALLOC_AUTO voor impliciet of SQL_DESC_ALLOC_USER voor expliciet

IRD: SQL_DESC_ALLOC_AUTO

IPD: SQL_DESC_ALLOC_AUTO
SQL_DESC_ARRAY_SIZE SQLULEN ARD: R/W APD: R/W IRD: Ongebruikt IPD: Ongebruikt ARD:[1] APD:[1] IRD: Ongebruikte IPD: Ongebruikt
SQL_DESC_ARRAY_STATUS_PTR SQLUSMALLINT* ARD: R/W APD: R/W IRD: R/W IPD: R/W ARD: Null ptr APD: Null ptr IRD: Null ptr IPD: Null ptr
SQL_DESC_BIND_OFFSET_PTR SQLLEN* ARD: R/W APD: R/W IRD: Ongebruikt IPD: Ongebruikt ARD: Null ptr APD: Null ptr IRD: Ongebruikte IPD: Ongebruikt
SQL_DESC_BIND_TYPE SQLINTEGER ARD: R/W APD: R/W IRD: Ongebruikt IPD: Ongebruikt ARD: SQL_BIND_BY_COLUMN

APD: SQL_BIND_BY_COLUMN

IRD: Ongebruikt

IPD: Ongebruikt
SQL_DESC_COUNT SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: 0 APD: 0 IRD: D IPD: 0
SQL_DESC_ROWS_PROCESSED_PTR SQLULEN* ARD: Ongebruikte APD: Ongebruikte IRD: R/W IPD: R/W ARD: Ongebruikte APD: Ongebruikte IRD: Null ptr IPD: Null ptr

[1] Deze velden worden alleen gedefinieerd wanneer de IPD automatisch door de driver wordt invuld. Zo niet, dan zijn ze niet gedefinieerd. Als een applicatie probeert deze velden in te stellen, wordt SQLSTATE HY091 (Invalid descriptor field identifier) teruggegeven.

De initialisatie van recordvelden is zoals weergegeven in de volgende tabel.

Naam van het record veld Type R/W Verstek
SQL_DESC_AUTO_UNIQUE_VALUE SQLINTEGER ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_BASE_COLUMN_NAME SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_BASE_TABLE_NAME SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_CASE_SENSITIVE SQLINTEGER ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: R ARD: Ongebruikte APD: Ongebruikte IRD: D IPD: D[1]
SQL_DESC_CATALOG_NAME SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_CONCISE_TYPE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: SQL_C_ DEFAULT APD: SQL_C_ DEFAULT IRD: D IPD: ND
SQL_DESC_DATA_PTR SQLPOINTER ARD: R/W APD: R/W IRD: Ongebruikt IPD: Ongebruikt ARD: Null ptr APD: Null ptr IRD: Ongebruikt IPD: Ongebruikt[2]
SQL_DESC_DATETIME_INTERVAL_CODE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_DATETIME_INTERVAL_PRECISION SQLINTEGER ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_DISPLAY_SIZE SQLLEN ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_FIXED_PREC_SCALE SQLSMALLINT ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: R ARD: Ongebruikte APD: Ongebruikte IRD: D IPD: D[1]
SQL_DESC_INDICATOR_PTR SQLLEN * ARD: R/W APD: R/W IRD: Ongebruikt IPD: Ongebruikt ARD: Null ptr APD: Null ptr IRD: Ongebruikte IPD: Ongebruikt
SQL_DESC_LABEL SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_LENGTH SQLULEN ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_LITERAL_PREFIX SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_LITERAL_SUFFIX SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_LOCAL_TYPE_NAME SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: R ARD: Ongebruikte APD: Ongebruikte IRD: D IPD: D[1]
SQL_DESC_NAME SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_NULLABLE SQLSMALLINT ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: R ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_NUM_PREC_RADIX SQLINTEGER ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_OCTET_LENGTH SQLLEN ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_OCTET_LENGTH_PTR SQLLEN * ARD: R/W APD: R/W IRD: Ongebruikt IPD: Ongebruikt ARD: Null ptr APD: Null ptr IRD: Ongebruikte IPD: Ongebruikt
SQL_DESC_PARAMETER_TYPE SQLSMALLINT ARD: Ongebruikte APD: Ongebruikte IRD: Ongebruikte IPD: R/W ARD: Ongebruikte APD: Ongebruikte IRD: Ongebruikte IPD: D=SQL_PARAM_INPUT
SQL_DESC_PRECISION SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_ROWVER SQLSMALLINT ARD: Ongebruikt

APD: Ongebruikt

IRD: R

IPD: R
ARD: Ongebruikt

APD: Ongebruikt

IRD: ND

IPD: ND
SQL_DESC_SCALE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_SCHEMA_NAME SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_SEARCHABLE SQLSMALLINT ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_TABLE_NAME SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt
SQL_DESC_TYPE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: SQL_C_DEFAULT APD: SQL_C_DEFAULT IRD: D IPD: ND
SQL_DESC_TYPE_NAME SQLCHAR * ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: R ARD: Ongebruikte APD: Ongebruikte IRD: D IPD: D[1]
SQL_DESC_UNNAMED SQLSMALLINT ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_UNSIGNED SQLSMALLINT ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: R ARD: Ongebruikte APD: Ongebruikte IRD: D IPD: D[1]
SQL_DESC_UPDATABLE SQLSMALLINT ARD: Ongebruikte APD: Ongebruikte IRD: R IPD: Niet gebruikt ARD: Ongebruikt APD: Ongebruikt IRD: D IPD: Niet gebruikt

[1] Deze velden worden alleen gedefinieerd wanneer de IPD automatisch door de driver wordt invuld. Zo niet, dan zijn ze niet gedefinieerd. Als een applicatie probeert deze velden in te stellen, wordt SQLSTATE HY091 (Invalid descriptor field identifier) teruggegeven.

[2] Het SQL_DESC_DATA_PTR-veld in de IPD kan worden ingesteld om een consistentiecontrole af te dwingen. Bij een volgende aanroep naar SQLGetDescField of SQLGetDescRec hoeft de driver niet de waarde terug te geven waarop SQL_DESC_DATA_PTR was ingesteld.

FieldIdentifier-argument

Het FieldIdentifier-argument geeft aan welk descriptorveld moet worden ingesteld. Een descriptor bevat de descriptorheader, bestaande uit de headervelden die in de volgende sectie, "Header Fields," worden beschreven, en nul of meer descriptorrecords, bestaande uit de recordvelden die in de sectie na de sectie "Header Fields" worden beschreven.

Headervelden

Elke descriptor heeft een header bestaande uit de volgende velden:

SQL_DESC_ALLOC_TYPE [Allen]
Dit alleen-lezen SQLSMALLINT-headerveld specificeert of de descriptor automatisch door de driver is toegewezen of expliciet door de applicatie. De applicatie kan dit veld verkrijgen, maar niet wijzigen. Het veld wordt door de driver ingesteld op SQL_DESC_ALLOC_AUTO als de descriptor automatisch door de driver is toegewezen. Het wordt door de driver ingesteld op SQL_DESC_ALLOC_USER als de descriptor expliciet door de applicatie is toegewezen.

SQL_DESC_ARRAY_SIZE [Applicatiebeschrijvingen]
In ARD's specificeert dit SQLULEN-headerveld het aantal rijen in de rijset. Dit is het aantal rijen dat wordt teruggegeven door een aanroep naar SQLFetch of SQLFetchScroll of dat wordt uitgevoerd door een aanroep naar SQLBulkOperations of SQLSetPos.

In APD's specificeert dit SQLULEN-headerveld het aantal waarden voor elke parameter.

De standaardwaarde van dit veld is 1. Als SQL_DESC_ARRAY_SIZE groter is dan 1, wijzen SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR en SQL_DESC_OCTET_LENGTH_PTR van de APD of ARD op arrays. De kardinaliteit van elke array is gelijk aan de waarde van dit veld.

Dit veld in de ARD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_ROW_ARRAY_SIZE. Dit veld in de APD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_PARAMSET_SIZE.

SQL_DESC_ARRAY_STATUS_PTR [Allen]
Voor elk descriptortype wijst dit SQLUSMALLINT * headerveld naar een array van SQLUSMALLINT-waarden. Deze arrays worden als volgt genoemd: rijstatusarray (IRD), parameterstatusarray (IPD), rijoperatiearray (ARD) en parameteroperatiearray (APD).

In de IRD wijst dit headerveld naar een rijstatusarray met statuswaarden na een aanroep naar SQLBulkOperations, SQLFetch, SQLFetchScroll of SQLSetPos. De array heeft evenveel elementen als er rijen in de rijset zijn. De applicatie moet een array SQLUSMALLINTs toewijzen en dit veld zo instellen dat het naar de array wijst. Het veld is standaard ingesteld op een nullpointer. De driver vult de array - tenzij het SQL_DESC_ARRAY_STATUS_PTR-veld is ingesteld op een nullpointer, in welk geval geen statuswaarden worden gegenereerd en de array niet wordt ingevuld.

Caution

Drivergedrag is ongedefinieerd als de applicatie de elementen van de rijstatusarray aanwijst door het SQL_DESC_ARRAY_STATUS_PTR veld van de IRD instelt.

De array wordt aanvankelijk gevuld met een aanroep naar SQLBulkOperations, SQLFetch, SQLFetchScroll of SQLSetPos. Als de aanroep niet SQL_SUCCESS of SQL_SUCCESS_WITH_INFO terugstuurde, zijn de inhoud van de array waarnaar dit veld wijst ongedefinieerd. De elementen in de array kunnen de volgende waarden bevatten:

  • SQL_ROW_SUCCESS: De rij is succesvol opgehaald en is sinds de laatste keer niet veranderd.

  • SQL_ROW_SUCCESS_WITH_INFO: De rij is succesvol opgehaald en is niet veranderd sinds de laatste keer gehaald. Er is echter een waarschuwing teruggegeven voor de rij.

  • SQL_ROW_ERROR: Er deed zich een fout op tijdens het ophalen van de rij.

  • SQL_ROW_UPDATED: De rij is succesvol opgehaald en is sinds de laatste keer bijgewerkt. Als de rij opnieuw wordt opgehalen, is de status SQL_ROW_SUCCESS.

  • SQL_ROW_DELETED: De rij is verwijderd sinds hij voor het laatst is opgehaald.

  • SQL_ROW_ADDED: De rij is ingevoegd door SQLBulkOperations. Als de rij opnieuw wordt opgehalen, is de status SQL_ROW_SUCCESS.

  • SQL_ROW_NOROW: De rijset overlapte het einde van de resultaatset, en er werd geen rij teruggegeven die overeenkwam met dit element van de rijstatusarray.

Dit veld in de IRD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_ROW_STATUS_PTR.

Het SQL_DESC_ARRAY_STATUS_PTR veld van de IRD is alleen geldig nadat SQL_SUCCESS of SQL_SUCCESS_WITH_INFO is teruggegeven. Als de retourcode niet een van deze is, is de locatie waarnaar SQL_DESC_ROWS_PROCESSED_PTR wijst ongedefinieerd.

In de IPD wijst dit headerveld naar een parameterstatusarray met statusinformatie voor elke set parameterwaarden na een aanroep naar SQLExecute of SQLExecDirect. Als de aanroep naar SQLExecute of SQLExecDirect geen SQL_SUCCESS of SQL_SUCCESS_WITH_INFO teruggeeft, zijn de inhoud van de array waarnaar dit veld wijst ongedefinieerd. De applicatie moet een array SQLUSMALLINTs toewijzen en dit veld zo instellen dat het naar de array wijst. De driver vult de array - tenzij het SQL_DESC_ARRAY_STATUS_PTR-veld is ingesteld op een nullpointer, in welk geval geen statuswaarden worden gegenereerd en de array niet wordt ingevuld. De elementen in de array kunnen de volgende waarden bevatten:

  • SQL_PARAM_SUCCESS: De SQL-instructie werd succesvol uitgevoerd voor deze set parameters.

  • SQL_PARAM_SUCCESS_WITH_INFO: De SQL-instructie werd succesvol uitgevoerd voor deze set parameters; echter, waarschuwingsinformatie is beschikbaar in de diagnostische datastructuur.

  • SQL_PARAM_ERROR: Er is een fout opgetreden bij het verwerken van deze set parameters. Aanvullende foutinformatie is beschikbaar in de diagnostische datastructuur.

  • SQL_PARAM_UNUSED: Deze parameterset werd niet gebruikt, mogelijk omdat een eerdere parameterset een fout veroorzaakte die verdere verwerking onderbrak, of omdat SQL_PARAM_IGNORE was ingesteld voor die set parameters in de array die door het SQL_DESC_ARRAY_STATUS_PTR veld van de APD werd gespecificeerd.

  • SQL_PARAM_DIAG_UNAVAILABLE: Diagnostische informatie is niet beschikbaar. Een voorbeeld hiervan is wanneer de driver arrays van parameters als een monolithische eenheid behandelt en dus dit niveau van foutinformatie niet genereert.

Dit veld in de IPD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_PARAM_STATUS_PTR.

In de ARD wijst dit headerveld naar een rijoperatie-array van waarden die door de applicatie kunnen worden ingesteld om aan te geven of deze rij genegeerd moet worden voor SQLSetPos-operaties . De elementen in de array kunnen de volgende waarden bevatten:

  • SQL_ROW_PROCEED: De rij wordt opgenomen in de bulkbewerking met SQLSetPos. (Deze instelling garandeert niet dat de bewerking op de rij zal plaatsvinden. Als de rij de status SQL_ROW_ERROR in de IRD-rijstatusarray heeft, kan de driver de bewerking in de rij mogelijk niet uitvoeren.)

  • SQL_ROW_IGNORE: De rij wordt uitgesloten van de bulkoperatie met behulp van SQLSetPos.

Als er geen elementen van de array zijn ingesteld, worden alle rijen opgenomen in de bulkbewerking. Als de waarde in het SQL_DESC_ARRAY_STATUS_PTR-veld van de ARD een nulpointer is, worden alle rijen opgenomen in de bulkbewerking; De interpretatie is hetzelfde als wanneer de pointer naar een geldige array wijst en alle elementen van de array SQL_ROW_PROCEED. Als een element in de array op SQL_ROW_IGNORE wordt gezet, wordt de waarde in de rijstatusarray voor de genegeerde rij niet gewijzigd.

Dit veld in de ARD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_ROW_OPERATION_PTR.

In de APD wijst dit headerveld naar een parameteroperatie-array van waarden die door de applicatie kunnen worden ingesteld om aan te geven of deze set parameters genegeerd moet worden wanneer SQLExecute of SQLExecDirect wordt aangeroepen. De elementen in de array kunnen de volgende waarden bevatten:

  • SQL_PARAM_PROCEED: De set parameters is opgenomen in de SQLExecute - of SQLExecDirect-aanroep .

  • SQL_PARAM_IGNORE: De set parameters wordt uitgesloten van de SQLExecute - of SQLExecDirect-aanroep .

Als er geen elementen van de array zijn ingesteld, worden alle sets parameters in de array gebruikt in de SQLExecute - of SQLExecDirect-aanroepen . Als de waarde in het SQL_DESC_ARRAY_STATUS_PTR veld van de APD een nulpointer is, worden alle sets parameters gebruikt; De interpretatie is hetzelfde als wanneer de pointer naar een geldige array wijst en alle elementen van de array SQL_PARAM_PROCEED.

Dit veld in de APD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_PARAM_OPERATION_PTR.

SQL_DESC_BIND_OFFSET_PTR [Aanvraagbeschrijvingen]
Dit SQLLEN * headerveld wijst naar de bindingsoffset. Deze is standaard ingesteld op een nullpointer. Als dit veld geen nullpointer is, dereferert de driver de pointer en voegt de dereferencerwaarde toe aan elk van de uitgestelde velden die een niet-nullwaarde in het descriptorrecord (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR en SQL_DESC_OCTET_LENGTH_PTR) heeft bij het ophalen, en gebruikt de nieuwe pointerwaarden bij het binden.

De bindingsoffset wordt altijd direct toegevoegd aan de waarden in de velden SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR en SQL_DESC_OCTET_LENGTH_PTR. Als de offset wordt gewijzigd naar een andere waarde, wordt de nieuwe waarde nog steeds direct toegevoegd aan de waarde in elk descriptorveld. De nieuwe offset wordt niet toegevoegd aan de veldwaarde plus eventuele eerdere offset.

Dit veld is een uitgesteld veld: het wordt niet gebruikt op het moment dat het wordt ingesteld, maar wordt later door de driver gebruikt wanneer deze adressen voor databuffers moet bepalen.

Dit veld in de ARD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_ROW_BIND_OFFSET_PTR. Dit veld in de ARD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_PARAM_BIND_OFFSET_PTR.

Voor meer informatie, zie de beschrijving van rijgewijze binding in SQLFetchScroll en SQLBindParameter.

SQL_DESC_BIND_TYPE [Applicatiebeschrijvingen]
Dit SQLUINTEGER-headerveld stelt de bindingoriëntatie in die gebruikt wordt voor het binden van kolommen of parameters.

In ARD's specificeert dit veld de bindingsoriëntatie wanneer SQLFetchScroll of SQLFetch wordt aangeroepen op de bijbehorende statement-handvat.

Om kolomgewijze binding voor kolommen te selecteren, wordt dit veld ingesteld op SQL_BIND_BY_COLUMN (de standaard).

Dit veld in de ARD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het SQL_ATTR_ROW_BIND_TYPE Attribuut.

In APD's specificeert dit veld de bindingsoriëntatie die gebruikt moet worden voor dynamische parameters.

Om kolomgewijze binding voor parameters te selecteren, wordt dit veld ingesteld op SQL_BIND_BY_COLUMN (de standaard).

Dit veld in de APD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het SQL_ATTR_PARAM_BIND_TYPE Attribuut.

SQL_DESC_COUNT [Allen]
Dit SQLSMALLINT-headerveld specificeert de 1-gebaseerde index van het hoogste genummerde record dat data bevat. Wanneer de driver de datastructuur voor de descriptor instelt, moet hij ook het veld SQL_DESC_COUNT instellen om aan te geven hoeveel records significant zijn. Wanneer een applicatie een instantie van deze datastructuur toewijst, hoeft deze niet te specificeren voor hoeveel records ruimte gereserveerd moet worden. Terwijl de applicatie de inhoud van de records specificeert, onderneemt de driver elke vereiste actie om ervoor te zorgen dat de descriptorhandle verwijst naar een datastructuur van voldoende omvang.

SQL_DESC_COUNT is niet een telling van alle datakolommen die gebonden zijn (als het veld in een ARD zit) of van alle parameters die gebonden zijn (als het veld in een APD staat), maar het nummer van het hoogste genummerde record. Als de kolom of parameter met het hoogste nummer onbegrensd is, wordt SQL_DESC_COUNT veranderd in het nummer van de volgende kolom of parameter met het hoogste nummer. Als een kolom of parameter met een getal dat kleiner is dan het nummer van de hoogste kolom wordt ontbonden (door SQLBindCol aan te roepen met het TargetValuePtr-argument op een nulpointer, of SQLBindParameter met het ParameterValuePtr-argument op nulpointer), wordt SQL_DESC_COUNT niet gewijzigd. Als extra kolommen of parameters worden gebonden met getallen groter dan het hoogste genummerde record dat data bevat, verhoogt de driver automatisch de waarde in het SQL_DESC_COUNT veld. Als alle kolommen worden ontbonden door SQLFreeStmt aan te roepen met de SQL_UNBIND-optie, worden de SQL_DESC_COUNT velden in de ARD en IRD op 0 gezet. Als SQLFreeStmt wordt aangeroepen met de SQL_RESET_PARAMS-optie, worden de SQL_DESC_COUNT velden in de APD en IPD op 0 gezet.

De waarde in SQL_DESC_COUNT kan expliciet worden ingesteld door een applicatie door SQLSetDescField aan te roepen. Als de waarde in SQL_DESC_COUNT expliciet wordt verlaagd, worden alle records met getallen groter dan de nieuwe waarde in SQL_DESC_COUNT effectief verwijderd. Als de waarde in SQL_DESC_COUNT expliciet op 0 staat en het veld in een ARD staat, worden alle databuffers behalve een gebonden bladwijzerkolom vrijgegeven.

Het aantal records in dit veld van een ARD bevat geen gebonden bladwijzerkolom. De enige manier om een bladwijzerkolom te ontbinden is door het SQL_DESC_DATA_PTR veld op een nullpointer te zetten.

SQL_DESC_ROWS_PROCESSED_PTR [Implementatiedescriptors]
In een IRD wijst dit SQLULEN * headerveld naar een buffer met het aantal rijen dat wordt opgehaald na een aanroep naar SQLFetch of SQLFetchScroll, of het aantal rijen dat wordt beïnvloed in een bulkoperatie uitgevoerd door een aanroep naar SQLBulkOperations of SQLSetPos, inclusief foutrijen.

In een IPD wijst dit SQLUINTEGER * headerveld naar een buffer met het aantal verzamelingen parameters dat is verwerkt, inclusief foutensets. Er wordt geen getal teruggegeven als dit een nullpointer is.

SQL_DESC_ROWS_PROCESSED_PTR is alleen geldig nadat SQL_SUCCESS of SQL_SUCCESS_WITH_INFO is teruggegeven na een aanroep naar SQLFetch of SQLFetchScroll (voor een IRD-veld) of SQLExecute, SQLExecDirect of SQLParamData (voor een IPD-veld). Als de aanroep die de buffer vult waarnaar dit veld wijst niet SQL_SUCCESS of SQL_SUCCESS_WITH_INFO terugkeert, zijn de inhoud van de buffer ongedefinieerd, tenzij deze SQL_NO_DATA teruggeeft, in welk geval de waarde in de buffer op 0 wordt gezet.

Dit veld in de ARD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_ROWS_FETCHED_PTR. Dit veld in de APD kan ook worden ingesteld door SQLSetStmtAttr aan te roepen met het attribuut SQL_ATTR_PARAMS_PROCESSED_PTR.

De buffer waar dit veld naar wijst, wordt door de applicatie toegewezen. Het is een uitgestelde uitvoerbuffer die door de driver wordt ingesteld. Deze is standaard ingesteld op een nullpointer.

Recordvelden

Elke descriptor bevat één of meer records bestaande uit velden die kolomgegevens of dynamische parameters definiëren, afhankelijk van het type descriptor. Elk record is een volledige definitie van een enkele kolom of parameter.

SQL_DESC_AUTO_UNIQUE_VALUE [IRD's]
Dit alleen-lezen SQLINTEGER-recordveld bevat SQL_TRUE als de kolom een automatisch verhogende kolom is, of SQL_FALSE als de kolom geen automatisch verhogende kolom is. Dit veld is alleen-lezen, maar de onderliggende kolom met automatisch inkrementerende is niet per se alleen-lezen.

SQL_DESC_BASE_COLUMN_NAME [IRD's]
Dit alleen-lezen SQLCHAR * recordveld bevat de naam van de basiskolom van de kolom van de resultaatset. Als er geen basiskolomnaam bestaat (zoals bij kolommen die expressies zijn), bevat deze variabele een lege string.

SQL_DESC_BASE_TABLE_NAME [IRD's]
Dit alleen-lezen SQLCHAR * recordveld bevat de basisnaam van de kolom van de resultaatset. Als een basistabelnaam niet kan worden gedefinieerd of niet toepasbaar is, bevat deze variabele een lege string.

SQL_DESC_CASE_SENSITIVE [Implementatiebeschrijvingen]
Dit alleen-lezen SQLINTEGER-recordveld bevat SQL_TRUE als de kolom of parameter als hoofdlettergevoelig wordt behandeld voor collaties en vergelijkingen, of SQL_FALSE als de kolom niet als hoofdlettergevoelig wordt behandeld voor collaties en vergelijkingen, of als het een niet-karakterkolom is.

SQL_DESC_CATALOG_NAME [IRD's]
Dit readonly SQLCHAR * recordveld bevat de catalogus van de basistabel die de kolom bevat. De retourwaarde is stuurkrachtafhankelijk als de kolom een expressie is of als de kolom deel uitmaakt van een weergave. Als de databron geen catalogi ondersteunt of de catalogus niet kan worden bepaald, bevat deze variabele een lege string.

SQL_DESC_CONCISE_TYPE [Allen]
Dit SQLSMALLINT-headerveld specificeert het beknopte datatype voor alle datatypen, inclusief de datum- en intervalgegevenstypen.

De waarden in de velden SQL_DESC_CONCISE_TYPE, SQL_DESC_TYPE en SQL_DESC_DATETIME_INTERVAL_CODE zijn onderling afhankelijk. Elke keer dat één van de velden wordt ingesteld, moet ook de andere worden ingesteld. SQL_DESC_CONCISE_TYPE kan worden ingesteld door een aanroep naar SQLBindCol of SQLBindParameter, of SQLSetDescField. SQL_DESC_TYPE kan worden ingesteld door een aanroep naar SQLSetDescField of SQLSetDescRec.

Als SQL_DESC_CONCISE_TYPE is ingesteld op een beknopt datatype anders dan een interval- of datetime-datatype, wordt het veld SQL_DESC_TYPE op dezelfde waarde gezet en het veld SQL_DESC_DATETIME_INTERVAL_CODE op 0.

Als SQL_DESC_CONCISE_TYPE is ingesteld op het beknopte datatype datetime of interval, wordt het SQL_DESC_TYPE-veld op het bijbehorende verbose type (SQL_DATETIME of SQL_INTERVAL) gezet en het SQL_DESC_DATETIME_INTERVAL_CODE-veld op de juiste subcode.

SQL_DESC_DATA_PTR [Applicatiebeschrijvingen en IPD's]
Dit SQLPOINTER-recordveld wijst naar een variabele die de parameterwaarde (voor APD's) of de kolomwaarde (voor ARD's) zal bevatten. Dit veld is een uitgesteld veld. Het wordt niet gebruikt op het moment dat het wordt ingesteld, maar wordt later door de driver gebruikt om gegevens op te halen.

De kolom die door het SQL_DESC_DATA_PTR veld van de ARD wordt gespecificeerd, is ongebonden als het TargetValuePtr-argument in een aanroep naar SQLBindCol een nullpointer is, of als het SQL_DESC_DATA_PTR-veld in de ARD wordt ingesteld door een aanroep naar SQLSetDescField of SQLSetDescRec naar een nullpointer. Andere velden worden niet beïnvloed als het SQL_DESC_DATA_PTR veld is ingesteld op een nulpointer.

Als de aanroep naar SQLFetch of SQLFetchScroll die de buffer invult waar dit veld naar verwijst, niet SQL_SUCCESS of SQL_SUCCESS_WITH_INFO teruggeeft, zijn de inhoud van de buffer niet gedefinieerd.

Telkens wanneer het SQL_DESC_DATA_PTR veld van een APD, ARD of IPD is ingesteld, controleert de driver of de waarde in het SQL_DESC_TYPE-veld een van de geldige ODBC C-datatypes of een driver-specifiek datatype bevat, en dat alle andere velden die de datatypes beïnvloeden consistent zijn. Het uitvoeren van een consistentiecontrole is het enige gebruik van het SQL_DESC_DATA_PTR veld van een IPD. Specifiek, als een applicatie het SQL_DESC_DATA_PTR veld van een IPD instelt en later SQLGetDescField op dit veld aanroept, krijgt deze niet noodzakelijkerwijs de waarde terug die hij had ingesteld. Voor meer informatie, zie "Consistentiecontroles" in SQLSetDescRec.

SQL_DESC_DATETIME_INTERVAL_CODE [Allen]
Dit SQLSMALLINT-recordveld bevat de subcode voor het specifieke datatype datum-tijd- of intervalgegevens, wanneer het SQL_DESC_TYPE-veld SQL_DATETIME of SQL_INTERVAL is. Dit geldt zowel voor SQL- als C-datatypes. De code bestaat uit de naam van het datatype waarbij "CODE" wordt vervangen door "TYPE" of "C_TYPE" (voor datumtijdtypes), of "CODE" in plaats van "INTERVAL" of "C_INTERVAL" (voor intervaltypes).

Als SQL_DESC_TYPE en SQL_DESC_CONCISE_TYPE in een applicatiedescriptor op SQL_C_DEFAULT zijn gezet en de descriptor niet gekoppeld is aan een statementhandvat, zijn de inhoud van SQL_DESC_DATETIME_INTERVAL_CODE ongedefinieerd.

Dit veld kan worden ingesteld voor de data-time-datatypes die in de volgende tabel zijn vermeld.

Datumtijdtypes DATETIME_INTERVAL_CODE
SQL_TYPE_DATE/SQL_C_TYPE_DATE SQL_CODE_DATE
SQL_TYPE_TIME/SQL_C_TYPE_TIME SQL_CODE_TIME
SQL_TYPE_TIMESTAMP/ SQL_C_TYPE_TIMESTAMP SQL_CODE_TIMESTAMP

Dit veld kan worden ingesteld voor de intervaldatatypes die in de volgende tabel worden vermeld.

Intervaltype DATETIME_INTERVAL_CODE
SQL_INTERVAL_DAY/ SQL_C_INTERVAL_DAY SQL_CODE_DAY
SQL_INTERVAL_DAY_TO_HOUR/ SQL_C_INTERVAL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR
SQL_INTERVAL_DAY_TO_MINUTE/ SQL_C_INTERVAL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE
SQL_INTERVAL_DAY_TO_SECOND/ SQL_C_INTERVAL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND
SQL_INTERVAL_HOUR/ SQL_C_INTERVAL_HOUR SQL_CODE_HOUR
SQL_INTERVAL_HOUR_TO_MINUTE/ SQL_C_INTERVAL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE
SQL_INTERVAL_HOUR_TO_SECOND/ SQL_C_INTERVAL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND
SQL_INTERVAL_MINUTE/ SQL_C_INTERVAL_MINUTE SQL_CODE_MINUTE
SQL_INTERVAL_MINUTE_TO_SECOND/ SQL_C_INTERVAL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND
SQL_INTERVAL_MONTH/ SQL_C_INTERVAL_MONTH SQL_CODE_MONTH
SQL_INTERVAL_SECOND/ SQL_C_INTERVAL_SECOND SQL_CODE_SECOND
SQL_INTERVAL_YEAR/ SQL_C_INTERVAL_YEAR SQL_CODE_YEAR
SQL_INTERVAL_YEAR_TO_MONTH/ SQL_C_INTERVAL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH

Voor meer informatie over de data-intervallen en dit veld, zie Data Type Identifiers and Descriptors.

SQL_DESC_DATETIME_INTERVAL_PRECISION [Allen]
Dit SQLINTEGER-recordveld bevat de intervalleidende precisie als het SQL_DESC_TYPE veld SQL_INTERVAL is. Wanneer het SQL_DESC_DATETIME_INTERVAL_CODE veld is ingesteld op een intervaldatatype, wordt dit veld ingesteld op de standaard intervalleidende precisie.

SQL_DESC_DISPLAY_SIZE [IRD's]
Dit alleen-lezen SQLINTEGER-recordveld bevat het maximale aantal tekens dat nodig is om de gegevens uit de kolom weer te geven.

SQL_DESC_FIXED_PREC_SCALE [Implementatiebeschrijvingen]
Dit alleen-lezen SQLSMALLINT-recordveld wordt ingesteld op SQL_TRUE als de kolom een exacte numerieke kolom is met een vaste precisie en niet-nul schaal, of op SQL_FALSE als de kolom geen exacte numerieke kolom is met een vaste precisie en schaal.

SQL_DESC_INDICATOR_PTR [Applicatiebeschrijvingen]
In ARD's wijst dit SQLLEN * recordveld naar de indicatorvariabele. Deze variabele bevat SQL_NULL_DATA als de kolomwaarde een NULL is. Voor APD's wordt de indicatorvariabele ingesteld op SQL_NULL_DATA om NULL dynamische argumenten te specificeren. Anders is de variabele nul (tenzij de waarden in SQL_DESC_INDICATOR_PTR en SQL_DESC_OCTET_LENGTH_PTR dezelfde pointer zijn).

Als het SQL_DESC_INDICATOR_PTR-veld in een ARD een nullpointer is, wordt de driver verhinderd informatie terug te geven over de vraag of de kolom NULL is of niet. Als de kolom NULL is en SQL_DESC_INDICATOR_PTR een nullpointer is, wordt SQLSTATE 22002 (indicatorvariabele vereist maar niet geleverd) teruggegeven wanneer de driver probeert de buffer te vullen na een aanroep naar SQLFetch of SQLFetchScroll. Als de aanroep naar SQLFetch of SQLFetchScroll niet SQL_SUCCESS of SQL_SUCCESS_WITH_INFO terugstuurde, is de inhoud van de buffer niet gedefinieerd.

Het SQL_DESC_INDICATOR_PTR veld bepaalt of het veld dat door SQL_DESC_OCTET_LENGTH_PTR wordt aangegeven, is ingesteld. Als de datawaarde voor een kolom NULL is, stelt de driver de indicatorvariabele in op SQL_NULL_DATA. Het veld waarnaar SQL_DESC_OCTET_LENGTH_PTR wijst, wordt dan niet ingesteld. Als tijdens het ophalen geen NULL-waarde wordt aangetroffen, wordt de buffer waar SQL_DESC_INDICATOR_PTR naar wijst op nul gezet en de buffer die door SQL_DESC_OCTET_LENGTH_PTR wordt aangeduid op de lengte van de data.

Als het SQL_DESC_INDICATOR_PTR-veld in een APD een nullpointer is, kan de applicatie dit descriptorrecord niet gebruiken om NULL-argumenten te specificeren.

Dit veld is een uitgesteld veld: het wordt niet gebruikt op het moment dat het wordt ingesteld, maar wordt later door de driver gebruikt om nullability aan te geven (voor ARD's) of om nullability te bepalen (voor APD's).

SQL_DESC_LABEL [IRD's]
Dit read-only SQLCHAR * recordveld bevat het kolomlabel of de titel. Als de kolom geen label heeft, bevat deze variabele de kolomnaam. Als de kolom naamloos en ongelabeld is, bevat deze variabele een lege string.

SQL_DESC_LENGTH [Allen]
Dit SQLULEN-recordveld is ofwel de maximale of daadwerkelijke lengte van een tekenreeks in tekens, of een binair datatype in bytes. Dit is de maximale lengte voor een datatype met vaste lengte, of de daadwerkelijke lengte voor een datatype met variabele lengte. De waarde ervan sluit altijd het null-terminatiekarakter uit dat de tekenreeks beëindigt. Voor waarden waarvan het type SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP of een van de SQL-intervaldatatypes is, heeft dit veld de lengte in tekens van de tekenstringrepresentatie van de datum- of intervalwaarde.

De waarde in dit veld kan verschillen van de waarde voor "lengte" zoals gedefinieerd in ODBC 2*.x*. Voor meer informatie, zie Bijlage D: Gegevenstypen.

SQL_DESC_LITERAL_PREFIX [IRD's]
Dit alleen-lezen SQLCHAR * recordveld bevat het teken of de tekens die de driver herkent als een prefix voor een literal van dit datatype. Deze variabele bevat een lege string voor een datatype waarvoor een letterlijke prefix niet van toepassing is.

SQL_DESC_LITERAL_SUFFIX [IRD's]
Dit alleen-lezen SQLCHAR * recordveld bevat het teken of de tekens die de driver herkent als een achtervoegsel voor een literal van dit datatype. Deze variabele bevat een lege string voor een datatype waarvoor een letterlijke achtervoegsel niet van toepassing is.

SQL_DESC_LOCAL_TYPE_NAME [Implementatiebeschrijvingen]
Dit alleen-lezen SQLCHAR * recordveld bevat elke gelokaliseerde (native language) naam voor het datatype die kan verschillen van de reguliere naam van het datatype. Als er geen gelokaliseerde naam is, wordt een lege string teruggegeven. Dit veld is uitsluitend bedoeld voor weergavedoeleinden.

SQL_DESC_NAME [Implementatiedescriptors]
Dit SQLCHAR * recordveld in een rijbeschrijving bevat de kolomalias, als die van toepassing is. Als de kolomalias niet van toepassing is, wordt de kolomnaam teruggegeven. In beide gevallen stelt de driver het SQL_DESC_UNNAMED veld in op SQL_NAMED wanneer hij het SQL_DESC_NAME veld instelt. Als er geen kolomnaam of kolomalias is, geeft de driver een lege string terug in het SQL_DESC_NAME-veld en zet het SQL_DESC_UNNAMED-veld op SQL_UNNAMED.

Een applicatie kan het SQL_DESC_NAME veld van een IPD instellen op een parameternaam of alias om opgeslagen procedureparameters op naam te specificeren. (Voor meer informatie, zie Bindingsparameters op naam (benoemde parameters).) Het SQL_DESC_NAME veld van een IRD is een alleen-lezen veld; SQLSTATE HY091 (Ongeldige descriptor field identifier) wordt teruggegeven als een applicatie probeert deze in te stellen.

In IPD's is dit veld ongedefinieerd als de driver geen benoemde parameters ondersteunt. Als de driver benoemde parameters ondersteunt en parameters kan beschrijven, wordt de parameternaam in dit veld teruggegeven.

SQL_DESC_NULLABLE [Implementatiedescriptors]
In IRD's wordt dit alleen-lezen SQLSMALLINT-recordveld SQL_NULLABLE als de kolom NULL-waarden kan hebben, SQL_NO_NULLS als de kolom geen NULL-waarden heeft, of SQL_NULLABLE_UNKNOWN als het niet bekend is of de kolom NULL-waarden accepteert. Dit veld betreft de kolom van de resultaatverzameling, niet de basiskolom.

In IPD's wordt dit veld altijd ingesteld op SQL_NULLABLE omdat dynamische parameters altijd nul kunnen worden en niet door een applicatie kunnen worden ingesteld.

SQL_DESC_NUM_PREC_RADIX [Allen]
Dit SQLINTEGER-veld bevat een waarde van 2 als het datatype in het SQL_DESC_TYPE-veld een benaderende numerieke datatype is, omdat het SQL_DESC_PRECISION-veld het aantal bits bevat. Dit veld bevat een waarde van 10 als het datatype in het SQL_DESC_TYPE veld een exact numeriek datatype is, omdat het SQL_DESC_PRECISION veld het aantal decimale cijfers bevat. Dit veld is ingesteld op 0 voor alle niet-numerieke datatypen.

SQL_DESC_OCTET_LENGTH [Allen]
Dit SQLLEN-recordveld bevat de lengte, in bytes, van een tekenreeks of binair datatype. Voor teken- of binaire types met vaste lengte is dit de daadwerkelijke lengte in bytes. Voor variabele lengte teken- of binaire types is dit de maximale lengte in bytes. Deze waarde sluit altijd ruimte uit voor het null-beëindigingsteken voor implementatiedescriptors en bevat altijd ruimte voor het null-terminatiekarakter voor applicatiedescriptors. Voor applicatiegegevens bevat dit veld de grootte van de buffer. Voor APD's is dit veld alleen gedefinieerd voor uitvoer- of invoer/uitvoerparameters.

SQL_DESC_OCTET_LENGTH_PTR [Applicatiebeschrijvingen]
Dit SQLLEN * recordveld wijst naar een variabele die de totale lengte in bytes van een dynamisch argument (voor parameterdescriptors) of van een gebonden kolomwaarde (voor rijdescriptors) bevat.

Voor een APD wordt deze waarde genegeerd voor alle argumenten behalve tekenstring en binair; als dit veld wijst naar SQL_NTS, moet het dynamische argument null-termined zijn. Om aan te geven dat een gebonden parameter een data-at-uitvoeringsparameter zal zijn, stelt een applicatie dit veld in het juiste record van de APD in op een variabele die bij uitvoeren de waarde SQL_DATA_AT_EXEC of het resultaat van de SQL_LEN_DATA_AT_EXEC macro zal bevatten. Als er meer dan één van zulke velden is, kan SQL_DESC_DATA_PTR worden ingesteld op een waarde die de parameter uniek identificeert om de applicatie te helpen bepalen welke parameter wordt opgevraagd.

Als het OCTET_LENGTH_PTR veld van een ARD een nullpointer is, geeft de driver geen lengte-informatie voor de kolom terug. Als het SQL_DESC_OCTET_LENGTH_PTR veld van een APD een nullpointer is, gaat de driver ervan uit dat tekenstrings en binaire waarden null-termined zijn. (Binaire waarden mogen niet null-termined zijn, maar moeten een lengte krijgen om afkap te voorkomen.)

Als de aanroep naar SQLFetch of SQLFetchScroll die de buffer invult waar dit veld naar verwijst, niet SQL_SUCCESS of SQL_SUCCESS_WITH_INFO teruggeeft, zijn de inhoud van de buffer niet gedefinieerd. Dit veld is een uitgesteld veld. Het wordt niet gebruikt op het moment dat het wordt ingesteld, maar wordt later door de driver gebruikt om de octetlengte van de data te bepalen of aan te geven.

SQL_DESC_PARAMETER_TYPE [IPD's]
Dit SQLSMALLINT-recordveld is ingesteld op SQL_PARAM_INPUT voor een invoerparameter, SQL_PARAM_INPUT_OUTPUT voor een invoer/uitvoerparameter, SQL_PARAM_OUTPUT voor een uitvoerparameter, SQL_PARAM_INPUT_OUTPUT_STREAM voor een invoer/uitvoer gestreamde parameter, of SQL_PARAM_OUTPUT_STREAM voor een outputgestreamde parameter. Het is standaard ingesteld op SQL_PARAM_INPUT.

Voor een IPD wordt het veld standaard ingesteld op SQL_PARAM_INPUT als de IPD niet automatisch door de driver wordt ingevuld (het SQL_ATTR_ENABLE_AUTO_IPD-statementattribuut is SQL_FALSE). Een applicatie moet dit veld in de IPD instellen voor parameters die geen invoerparameters zijn.

SQL_DESC_PRECISION [Allen]
Dit SQLSMALLINT-recordveld bevat het aantal cijfers voor een exact numeriek type, het aantal bits in de mantisse (binaire precisie) voor een benaderende numerieke type, of het aantal cijfers in de fractie van seconden voor het SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP of SQL_INTERVAL_SECOND datatype. Dit veld is niet gedefinieerd voor alle andere datatypen.

De waarde in dit veld kan verschillen van de waarde voor "precisie" zoals gedefinieerd in ODBC 2*.x*. Voor meer informatie, zie Bijlage D: Gegevenstypen.

SQL_DESC_ROWVER [Implementatiedescriptors]
Dit SQLSMALLINTrecord-veld geeft aan of een kolom automatisch wordt aangepast door de DBMS wanneer een rij wordt bijgewerkt (bijvoorbeeld een kolom van het type "timestamp" in SQL Server). De waarde van dit recordveld wordt ingesteld op SQL_TRUE als de kolom een kolom voor de verdeling van rijen is, en op SQL_FALSE anders. Dit kolomattribuut lijkt op het aanroepen van SQLSpecialColumns met IdentifierType van SQL_ROWVER om te bepalen of een kolom automatisch wordt bijgewerkt.

SQL_DESC_SCALE [Allen]
Dit SQLSMALLINT-recordveld bevat de gedefinieerde schaal voor decimale en numerieke datatypen. Het veld is niet gedefinieerd voor alle andere datatypen.

De waarde in dit veld kan verschillen van de waarde voor "schaal" zoals gedefinieerd in ODBC 2*.x*. Voor meer informatie, zie Bijlage D: Gegevenstypen.

SQL_DESC_SCHEMA_NAME [IRD's]
Dit alleen-lezen SQLCHAR * recordveld bevat de schemanaam van de basistabel die de kolom bevat. De retourwaarde is stuurkrachtafhankelijk als de kolom een expressie is of als de kolom deel uitmaakt van een weergave. Als de databron geen schema's ondersteunt of de naam van het schema niet kan worden bepaald, bevat deze variabele een lege string.

SQL_DESC_SEARCHABLE [IRD's]
Dit alleen-lezen SQLSMALLINT-recordveld is ingesteld op een van de volgende waarden:

  • SQL_PRED_NONE als de kolom niet gebruikt kan worden in een WHERE-clausule. (Dit is hetzelfde als de SQL_UNSEARCHABLE waarde in ODBC 2*.x*.)

  • SQL_PRED_CHAR of de kolom gebruikt kan worden in een WHERE-clausule, maar alleen met het LIKE-predicaat. (Dit is hetzelfde als de SQL_LIKE_ONLY waarde in ODBC 2*.x*.)

  • SQL_PRED_BASIC of de kolom gebruikt kan worden in een WHERE-clausule met alle vergelijkingsoperatoren behalve LIKE. (Dit is hetzelfde als de SQL_EXCEPT_LIKE-waarde in ODBC 2*.x*.)

  • SQL_PRED_SEARCHABLE of de kolom gebruikt kan worden in een WHERE-clausule met elke vergelijkingsoperator.

SQL_DESC_TABLE_NAME [IRD's]
Dit alleen-lezen SQLCHAR * recordveld bevat de naam van de basistabel die deze kolom bevat. De retourwaarde is stuurkrachtafhankelijk als de kolom een expressie is of als de kolom deel uitmaakt van een weergave.

SQL_DESC_TYPE [Allen]
Dit SQLSMALLINT-recordveld specificeert het beknopte SQL- of C-datatype voor alle datatypes behalve date, time en interval datatypes. Voor de data-time- en intervaldatatypes specificeert dit veld het verbose datatype, dat SQL_DATETIME of SQL_INTERVAL is.

Telkens wanneer dit veld SQL_DATETIME of SQL_INTERVAL bevat, moet het SQL_DESC_DATETIME_INTERVAL_CODE veld de juiste subcode voor het beknopte type bevatten. Voor datatime-datatypes bevat SQL_DESC_TYPE SQL_DATETIME, en het SQL_DESC_DATETIME_INTERVAL_CODE-veld bevat een subcode voor het specifieke datetime-datatype. Voor intervaldatatypes bevat SQL_DESC_TYPE SQL_INTERVAL en bevat het veld SQL_DESC_DATETIME_INTERVAL_CODE een subcode voor het specifieke intervaldatatype.

De waarden in de velden SQL_DESC_TYPE en SQL_DESC_CONCISE_TYPE zijn onderling afhankelijk. Elke keer dat één van de velden wordt ingesteld, moet ook de andere worden ingesteld. SQL_DESC_TYPE kan worden ingesteld door een aanroep naar SQLSetDescField of SQLSetDescRec. SQL_DESC_CONCISE_TYPE kan worden ingesteld door een aanroep naar SQLBindCol of SQLBindParameter, of SQLSetDescField.

Als SQL_DESC_TYPE is ingesteld op een beknopt datatype anders dan een interval- of datetime-datatype, wordt het SQL_DESC_CONCISE_TYPE-veld op dezelfde waarde gezet en het SQL_DESC_DATETIME_INTERVAL_CODE-veld op 0.

Als SQL_DESC_TYPE is ingesteld op het verbose datum-tijd- of intervaldatatype (SQL_DATETIME of SQL_INTERVAL) en het SQL_DESC_DATETIME_INTERVAL_CODE-veld is op de juiste subcode, wordt het SQL_DESC_CONCISE-veld TYPE op het bijbehorende beknopte type gezet. Als je probeert SQL_DESC_TYPE in te stellen op een van de beknopte datum- of intervaltypen, krijg je SQLSTATE HY021 (Inconsistente descriptorinformatie) terug.

Wanneer het SQL_DESC_TYPE-veld wordt ingesteld door een aanroep naar SQLBindCol, SQLBindParameter of SQLSetDescField, worden de volgende velden ingesteld op de volgende standaardwaarden, zoals getoond in de onderstaande tabel. De waarden van de overige velden van hetzelfde record zijn niet gedefinieerd.

Waarde van SQL_DESC_TYPE Andere velden die impliciet worden vastgesteld
SQL_CHAR, SQL_VARCHAR, SQL_C_CHAR, SQL_C_VARCHAR SQL_DESC_LENGTH staat ingesteld op 1. SQL_DESC_PRECISION staat op 0.
SQL_DATETIME Wanneer SQL_DESC_DATETIME_INTERVAL_CODE is ingesteld op SQL_CODE_DATE of SQL_CODE_TIME, wordt SQL_DESC_PRECISION op 0 gezet. Wanneer het op SQL_DESC_TIMESTAMP staat, staat SQL_DESC_PRECISION op 6.
SQL_DECIMAL, SQL_NUMERIC, SQL_C_NUMERIC SQL_DESC_SCALE staat op 0. SQL_DESC_PRECISION is ingesteld op de implementatiegedefinieerde precisie voor het betreffende datatype.

Zie SQL to C: Numeric voor informatie over hoe je handmatig een SQL_C_NUMERIC waarde bindt.
SQL_FLOAT, SQL_C_FLOAT SQL_DESC_PRECISION is ingesteld op de door implementatie gedefinieerde standaardprecisie voor SQL_FLOAT.
SQL_INTERVAL Wanneer SQL_DESC_DATETIME_INTERVAL_CODE is ingesteld op een intervaldatatype, wordt SQL_DESC_DATETIME_INTERVAL_PRECISION ingesteld op 2 (de standaard intervalleidende precisie). Wanneer het interval een secondencomponent heeft, wordt SQL_DESC_PRECISION ingesteld op 6 (de standaard intervalsecondenprecisie).

Wanneer een applicatie SQLSetDescField aanroept om velden van een descriptor in te stellen in plaats van SQLSetDescRec aan te roepen, moet de applicatie eerst het datatype declareren. Wanneer dat gebeurt, worden de andere velden die in de vorige tabel zijn aangegeven impliciet ingesteld. Als een van de impliciet ingestelde waarden onacceptabel is, kan de applicatie vervolgens SQLSetDescField of SQLSetDescRec aanroepen om de onaanvaardbare waarde expliciet in te stellen.

SQL_DESC_TYPE_NAME [Implementatiedescriptors]
Dit read-only SQLCHAR * recordveld bevat de naam van het type van het databron-afhankelijke type (bijvoorbeeld "CHAR", "VARCHAR", enzovoort). Als de naam van het datatype onbekend is, bevat deze variabele een lege string.

SQL_DESC_UNNAMED [Implementatiebeschrijvingen]
Deze SQLSMALLINT-record-veld in een rij-descriptor wordt door de driver ingesteld op SQL_NAMED of SQL_UNNAMED wanneer het SQL_DESC_NAME veld wordt ingesteld. Als het SQL_DESC_NAME-veld een kolomalias bevat of als het kolomalias niet van toepassing is, stelt de driver het SQL_DESC_UNNAMED-veld in op SQL_NAMED. Als een applicatie het SQL_DESC_NAME veld van een IPD instelt op een parameternaam of alias, stelt de driver het SQL_DESC_UNNAMED veld van de IPD in op SQL_NAMED. Als er geen kolomnaam of kolomalias is, stelt de driver het SQL_DESC_UNNAMED veld in op SQL_UNNAMED.

Een applicatie kan het SQL_DESC_UNNAMED veld van een IPD instellen op SQL_UNNAMED. Een driver retourneert SQLSTATE HY091 (Ongeldige descriptor field identifier) als een applicatie probeert het SQL_DESC_UNNAMED veld van een IPD op SQL_NAMED te zetten. Het SQL_DESC_UNNAMED veld van een IRD is alleen-lezen; SQLSTATE HY091 (Ongeldige descriptor field identifier) wordt teruggegeven als een applicatie probeert deze in te stellen.

SQL_DESC_UNSIGNED [Implementatiebeschrijvingen]
Dit alleen-lezen SQLSMALLINT-recordveld wordt ingesteld op SQL_TRUE als het kolomtype onondertekend of niet-numeriek is, of SQL_FALSE als het kolomtype ondertekend is.

SQL_DESC_UPDATABLE [IRD's]
Dit alleen-lezen SQLSMALLINT-recordveld is ingesteld op een van de volgende waarden:

  • SQL_ATTR_READ_ONLY als de kolom met de resultaatset alleen-lezen is.

  • SQL_ATTR_WRITE als de kolom van de resultaatset lees-schrijven is.

  • SQL_ATTR_READWRITE_UNKNOWN als het niet bekend is, of de kolom van de resultaatset updateerbaar is of niet.

SQL_DESC_UPDATABLE beschrijft de updatebaarheid van de kolom in de resultaatset, niet de kolom in de basistabel. De updatebaarheid van de kolom in de basistabel waarop deze kolom van de resultaatset is gebaseerd, kan verschillen van de waarde in dit veld. Of een kolom updateerbaar is, kan gebaseerd zijn op het datatype, gebruikersrechten en de definitie van de resultaatset zelf. Als het onduidelijk is of een kolom updateerbaar is, moet SQL_ATTR_READWRITE_UNKNOWN worden teruggegeven.

Consistentiecontroles

Een consistentiecontrole wordt automatisch uitgevoerd door de driver telkens wanneer een applicatie een waarde voor het SQL_DESC_DATA_PTR veld van de ARD, APD of IPD doorgeeft. Als een van de velden inconsistent is met andere velden, zal SQLSetDescField SQLSTATE HY021 (Inconsistente descriptorinformatie) teruggeven. Voor meer informatie, zie "Consistentiecontrole" in SQLSetDescRec.

Voor informatie over Zien!
Een kolom binden SQLBindCol, functie
Binding van een parameter SQLBindParameter-functie
Een descriptorveld verkrijgen SQLGetDescField-functie
Meerdere descriptorvelden verkrijgen SQLGetDescRec-functie
Meerdere descriptorvelden instellen SQLSetDescRec-functie

Zie ook

ODBC-headerbestanden
ODBC-API-verwijzing