SQLGetTypeInfo functie

Conformiteit
Versie geïntroduceerd: NALEVING van ODBC 1.0-standaarden: ISO 92

Samenvatting
SQLGetTypeInfo geeft informatie terug over datatypes die door de databron worden ondersteund. De driver geeft de informatie terug in de vorm van een SQL-resultaatset. De datatypen zijn bedoeld voor gebruik in Data Definition Language (DDL)-instructies.

Important

Applicaties moeten de typenamen gebruiken die worden weergegeven in de TYPE_NAME kolom van de SQLGetTypeInfo-resultaatset in ALTER TABLE en statements CREATE TABLE . SQLGetTypeInfo kan meer dan één rij met dezelfde waarde in de DATA_TYPE kolom teruggeven.

Syntax

  
SQLRETURN SQLGetTypeInfo(  
     SQLHSTMT      StatementHandle,  
     SQLSMALLINT   DataType);  

Arguments

StatementHandle
[Invoer] Statementhandle voor de resultaatset.

Datatype
[Invoer] Het SQL-datatype. Dit moet een van de waarden zijn in de sectie SQL Data Types van Appendix D: Data Types, of een driver-specifiek SQL-datatype. SQL_ALL_TYPES specificeert dat informatie over alle datatypen moet worden teruggegeven.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR of SQL_INVALID_HANDLE.

Diagnostics

Wanneer SQLGetTypeInfo 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_STMT en een Handle van StatementHandle. De volgende tabel geeft een overzicht van de SQLSTATE-waarden die vaak door SQLGetTypeInfo worden geretourneerd 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 Een opgegeven instructiekenmerk is ongeldig vanwege de arbeidsomstandigheden van de implementatie, dus een vergelijkbare waarde is tijdelijk vervangen. (Roep SQLGetStmtAttr aan om de tijdelijk gesubstitueerde waarde te bepalen.) De vervangingswaarde is geldig voor de StatementHandle totdat de cursor wordt gesloten. De statementattributen die kunnen worden gewijzigd zijn: SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_KEYSET_SIZE, SQL_ATTR_MAX_LENGTH, SQL_ATTR_MAX_ROWS, SQL_ATTR_QUERY_TIMEOUT en SQL_ATTR_SIMULATE_CURSOR. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
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.
24000 Ongeldige cursorstatus Er stond een cursor open op de StatementHandle, en SQLFetch of SQLFetchScroll was aangeroepen. Deze fout wordt geretourneerd door Driver Manager als SQLFetch of SQLFetchScroll geen SQL_NO_DATA heeft geretourneerd en wordt geretourneerd door het stuurprogramma als SQLFetch of SQLFetchScroll SQL_NO_DATA heeft geretourneerd.

Er was een resultaatset geopend op de StatementHandle, maar SQLFetch of SQLFetchScroll waren niet aangeroepen.
40001 Serialisatiefout De transactie is teruggedraaid vanwege een resource-impasse met een andere transactie.
40003 Voltooiing van instructie onbekend De bijbehorende verbinding faalde tijdens de uitvoering van deze functie en de status van de transactie kan niet worden bepaald.
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.
HY004 Ongeldig SQL-datatype De waarde die voor het argument DataType werd gespecificeerd, was noch een geldige ODBC SQL-datatype-identificatie, noch een driver-specifieke datatype-identificatie die door de driver werd ondersteund.
HY008 Bewerking geannuleerd Asynchrone verwerking werd ingeschakeld voor de StatementHandle, vervolgens werd de functie aangeroepen en voordat de uitvoering voltooid was, werd SQLCancel of SQLCancelHandle aangeroepen op de StatementHandle. Vervolgens werd de functie opnieuw aangeroepen op de StatementHandle.

De functie werd aangeroepen en voordat de uitvoering werd voltooid, werd SQLCancel of SQLCancelHandle aangeroepen op de StatementHandle vanuit een andere thread in een multithread-applicatie.
HY010 Fout in functiereeks (DM) Er is een asynchroon uitgevoerde functie aangeroepen voor de verbindingsgreep die is gekoppeld aan de StatementHandle. Deze asynchrone functie werd nog uitgevoerd toen de SQLGetTypeInfo-functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect of SQLMoreResults werd aangeroepen voor de StatementHandle en geretourneerd SQL_PARAM_DATA_AVAILABLE. Deze functie is aangeroepen voordat gegevens zijn opgehaald voor alle gestreamde parameters.

(DM) Er is een asynchroon uitgevoerde functie (niet deze) aangeroepen voor de StatementHandle en werd nog steeds uitgevoerd toen deze functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations of SQLSetPos werd aangeroepen voor de StatementHandle en geretourneerd SQL_NEED_DATA. Deze functie is aangeroepen voordat gegevens werden verzonden voor alle parameters of kolommen voor uitvoering van gegevens.
HY013 Fout bij geheugenbeheer De functie-aanroep kan niet worden verwerkt omdat de onderliggende geheugenobjecten niet kunnen worden geopend, mogelijk vanwege weinig geheugen.
HY117 De verbinding is onderbroken vanwege een onbekende transactiestatus. Alleen de verbinding verbreken en alleen-lezenfuncties zijn toegestaan. (DM) Zie SQLEndTran Function voor meer informatie over de onderbroken status.
HYC00 Optionele functie niet geïmplementeerd De combinatie van de huidige instellingen van de SQL_ATTR_CONCURRENCY- en SQL_ATTR_CURSOR_TYPE instructiekenmerken wordt niet ondersteund door het stuurprogramma of de gegevensbron.

Het kenmerk SQL_ATTR_USE_BOOKMARKS instructie is ingesteld op SQL_UB_VARIABLE en het kenmerk SQL_ATTR_CURSOR_TYPE instructie is ingesteld op een cursortype waarvoor het stuurprogramma geen bladwijzers ondersteunt.
HYT00 Time-out verlopen De time-outperiode van de query is verlopen voordat de gegevensbron de resultatenset heeft geretourneerd. De time-outperiode wordt ingesteld via SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT.
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 overeenkomt met de StatementHandle ondersteunt deze functie niet.
IM017 Polling is uitgeschakeld in de asynchrone meldingsmodus Wanneer het meldingsmodel wordt gebruikt, wordt polling uitgeschakeld.
IM018 SQLCompleteAsync is niet aangeroepen om de vorige asynchrone bewerking op deze ingang te voltooien. Als de vorige functieaanroep op de ingang SQL_STILL_EXECUTING retourneert en als de meldingsmodus is ingeschakeld, moet SQLCompleteAsync worden aangeroepen op de ingang om naverwerking te kunnen uitvoeren en de bewerking te voltooien.

Comments

SQLGetTypeInfo geeft de resultaten terug als een standaard resultaatset, geordend op DATA_TYPE en vervolgens op hoe nauwkeurig het datatype overeenkomt met het bijbehorende ODBC SQL-datatype. Gegevenstypen die door de databron worden gedefinieerd, krijgen voorrang boven door de gebruiker gedefinieerde datatypen. Bijgevolg is de sorteervolgorde niet noodzakelijk consistent, maar kan deze worden gegeneraliseerd als DATA_TYPE eerst, gevolgd door TYPE_NAME, beide stijgend. Stel bijvoorbeeld dat een databron INTEGER- en COUNTER-datatypes definieert, waarbij COUNTER automatisch incrementeert, en dat er ook een door de gebruiker gedefinieerd datatype WHOLENUM is gedefinieerd. Deze worden teruggegeven in de volgorde INTEGER, WHOLENUM en COUNTER, omdat WHOLENUM nauw overeenkomt met het ODBC SQL-datatype SQL_INTEGER, terwijl het automatisch verhogende datatype, hoewel ondersteund door de databron, niet nauwkeurig overeenkomt met een ODBC SQL-datatype. Voor informatie over hoe deze informatie gebruikt kan worden, zie DDL Statements.

Als het DataType-argument een datatype specificeert dat geldig is voor de versie van ODBC die door de driver wordt ondersteund, maar niet door de driver, dan geeft het een lege resultaatset terug.

Note

Zie Catalogusfuncties voor meer informatie over het algemene gebruik, argumenten en geretourneerde gegevens van ODBC-catalogusfuncties.

De volgende kolommen zijn hernoemd naar ODBC 3. x. De wijzigingen in kolomnamen beïnvloeden de achterwaartse compatibiliteit niet, omdat applicaties binden op kolomnummer.

ODBC 2.0-kolom ODBC 3. X-kolom
PRECISIE Kolomgrootte
GELD FIXED_PREC_SCALE
AUTO_INCREMENT AUTO_UNIQUE_VALUE

De volgende kolommen zijn toegevoegd aan de resultatenset die door SQLGetTypeInfo voor ODBC 3 wordt teruggegeven. x:

  • SQL_DATA_TYPE

  • INTERVAL_PRECISIE

  • SQL_DATETIME_SUB

  • NUM_PREC_RADIX

De volgende tabel bevat de kolommen in de resultatenset. Extra kolommen voorbij kolom 19 (INTERVAL_PRECISION) kunnen door de driver worden gedefinieerd. Een applicatie zou toegang moeten krijgen tot driver-specifieke kolommen door af te tellen vanaf het einde van de resultaatset in plaats van een expliciete ordinaalpositie te specificeren. Zie Gegevens geretourneerd door Catalogusfuncties voor meer informatie.

Note

SQLGetTypeInfo geeft mogelijk niet alle datatypes terug. Een driver kan bijvoorbeeld geen door de gebruiker gedefinieerde datatypes teruggeven. Applicaties kunnen elk geldig datatype gebruiken, ongeacht of het wordt teruggegeven door SQLGetTypeInfo of niet. De datatypes die door SQLGetTypeInfo worden teruggegeven, zijn die welke door de databron worden ondersteund. Ze zijn bedoeld voor gebruik in Data Definition Language (DDL)-instructies. Drivers kunnen resultaatgegevens teruggeven met andere datatypes dan de door SQLGetTypeInfo teruggegeven. Bij het maken van de resultaatset voor een catalogusfunctie kan de driver een datatype gebruiken dat niet door de databron wordt ondersteund.

Kolomnaam Kolom

number
Gegevenstype Comments
TYPE_NAME (ODBC 2.0) 1 Varchar niet NULL Databron-afhankelijke datatypenaam; bijvoorbeeld "CHAR()", "VARCHAR()", "MONEY", "LONG VARBINARY" of "CHAR ( ) VOOR BITDATA". Applicaties moeten deze naam gebruiken in CREATE TABLE en ALTER TABLE statements.
DATA_TYPE (ODBC 2.0) 2 Smallint, niet NULL SQL-datatype. Dit kan een ODBC SQL-gegevenstype of een stuurprogrammaspecifiek SQL-gegevenstype zijn. Voor data-time of intervalgegevens geeft deze kolom het beknopte datatype terug (zoals SQL_TYPE_TIME of SQL_INTERVAL_YEAR_TO_MONTH). Voor een lijst van geldige ODBC SQL-datatypes, zie SQL Data Types in Appendix D: Data Types. Zie de documentatie van het stuurprogramma voor informatie over stuurprogrammaspecifieke SQL-gegevenstypen.
COLUMN_SIZE (ODBC 2.0) 3 Integer De maximale kolomgrootte die de server ondersteunt voor dit datatype. Voor numerieke gegevens is dit de maximale precisie. Voor stringgegevens is dit de lengte in tekens. Voor data-time datatypes is dit de lengte in tekens van de stringrepresentatie (uitgaande van de maximaal toegestane precisie van het fractie van seconden). NULL wordt teruggegeven voor datatypen waarbij kolomgrootte niet van toepassing is. Voor intervaldatatypes is dit het aantal tekens in de tekenrepresentatie van het intervalliteraal (zoals gedefinieerd door de intervalleidende precisie; zie Intervalgegevenstypelengte in Appendix D: Data Types).

Voor meer informatie over kolomgrootte, zie Kolomgrootte, Decimale cijfers, Overdracht van octetlengte en Weergavegrootte in Bijlage D: Gegevenstypen.
LITERAL_PREFIX (ODBC 2.0) 4 Varchar Een teken of tekens die een letterlijke voorvoegsel geven; bijvoorbeeld een enkele aanhalingstekens (') voor tekengegevenstypes of 0x voor binaire datatypes; NULL wordt teruggegeven voor datatypen waarbij een letterlijke prefix niet van toepassing is.
LITERAL_SUFFIX (ODBC 2.0) 5 Varchar Teken of tekens die worden gebruikt om een letterlijke te beëindigen; bijvoorbeeld een enkele aanhalingstekens (') voor tekengegevenstypes; NULL wordt teruggegeven voor datatypen waarbij een letterlijke achtervoegsel niet van toepassing is.
CREATE_PARAMS (ODBC 2.0) 6 Varchar Een lijst van trefwoorden, gescheiden door komma's, die overeenkomen met elke parameter die de applicatie tussen haakjes kan specificeren bij het gebruik van de naam die in het TYPE_NAME-veld wordt teruggegeven. De trefwoorden in de lijst kunnen een van de volgende zijn: lengte, precisie of schaal. Ze verschijnen in de volgorde waarin de syntaxis vereist dat ze worden gebruikt. Bijvoorbeeld, CREATE_PARAMS voor DECIMAL zou "precision, scale" zijn; CREATE_PARAMS voor VARCHAR zou gelijk zijn aan "lengte." NULL wordt teruggegeven als er geen parameters zijn voor de datatypedefinitie; bijvoorbeeld INTEGER.

De chauffeur levert de CREATE_PARAMS tekst in de taal van het land/de regio waar deze wordt gebruikt.
NULLABLE (ODBC 2.0) 7 Smallint, niet NULL Of het datatype een NULL-waarde accepteert:

SQL_NO_NULLS als het datatype geen NULL-waarden accepteert.

SQL_NULLABLE of het datatype NULL-waarden accepteert.

SQL_NULLABLE_UNKNOWN als het niet bekend is, of de kolom NULL-waarden accepteert.
CASE_SENSITIVE (ODBC 2.0) 8 Smallint, niet NULL Of een tekendatatype hoofdlettergevoelig is bij collaties en vergelijkingen:

SQL_TRUE of het datatype een karakterdatatype is en hoofdlettergevoelig is.

SQL_FALSE of het datatype geen tekendatatype is of niet hoofdlettergevoelig is.
DOORZOEKBAAR (ODBC 2.0) 9 Smallint, niet NULL Hoe het datatype wordt gebruikt in een WHERE-clausule:

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 (vergelijking, gekwantificeerde vergelijking, BETWEEN,DISTINCT, IN,MATCH en UNIQUE). (Dit is hetzelfde als de SQL_ALL_EXCEPT_LIKE waarde in ODBC 2. x.)

SQL_SEARCHABLE of de kolom gebruikt kan worden in een WHERE-clausule met elke vergelijkingsoperator.
UNSIGNED_ATTRIBUTE (ODBC 2.0) 10 Smallint Of het datatype ongesigneerd is:

SQL_TRUE of het datatype niet ondertekend is.

SQL_FALSE of het datatype ondertekend is.

NULL wordt teruggegeven als het attribuut niet van toepassing is op het datatype of het datatype niet numeriek is.
FIXED_PREC_SCALE (ODBC 2.0) 11 Smallint, niet NULL Of het datatype vooraf gedefinieerde vaste precisie en schaal heeft (die specifiek zijn voor de gegevensbron), zoals een gelddatatype:

SQL_TRUE of er vooraf een vaste precisie en schaal zijn vastgesteld.

SQL_FALSE als het niet vooraf gedefinieerde vaste precisie en schaal heeft.
AUTO_UNIQUE_VALUE (ODBC 2.0) 12 Smallint Of het datatype automatisch incrementeel is:

SQL_TRUE of het datatype automatisch inperkend is.

SQL_FALSE als het datatype niet automatisch inkrementeert wordt.

NULL wordt teruggegeven als het attribuut niet van toepassing is op het datatype of het datatype niet numeriek is.

Een applicatie kan waarden in een kolom met dit attribuut invoegen, maar kan doorgaans de waarden in die kolom niet bijwerken.

Wanneer een insert wordt omgezet in een auto-incrementele kolom, wordt er bij het invoegen een unieke waarde in de kolom ingevoegd. De increment is niet gedefinieerd, maar is specifiek voor de gegevensbron. Een applicatie mag er niet van uitgaan dat een auto-increment kolom op een bepaald punt begint of met een bepaalde waarde toeneemt.
LOCAL_TYPE_NAME (ODBC 2.0) 13 Varchar Gelokaliseerde versie van de databron-afhankelijke naam van het datatype. NULL wordt teruggegeven als een gelokaliseerde naam niet door de databron wordt ondersteund. Deze naam is alleen bedoeld voor weergave, bijvoorbeeld in dialoogvensters.
MINIMUM_SCALE (ODBC 2.0) 14 Smallint De minimale schaal van het datatype op de databron. Als een datatype een vaste schaal heeft, bevatten zowel de kolommen MINIMUM_SCALE als de MAXIMUM_SCALE deze waarde. Een SQL_TYPE_TIMESTAMP kolom kan bijvoorbeeld een vaste schaal hebben voor fracties van seconden. NULL wordt teruggegeven waar schaal niet van toepassing is. Voor meer informatie, zie Kolomgrootte, Decimale cijfers, Transfer Octet Length en Display Size in Appendix D: Data Types.
MAXIMUM_SCALE (ODBC 2.0) 15 Smallint De maximale schaal van het datatype op de databron. NULL wordt teruggegeven waar schaal niet van toepassing is. Als de maximale schaal niet apart op de databron wordt gedefinieerd, maar in plaats daarvan gelijk is aan de maximale precisie, bevat deze kolom dezelfde waarde als de kolom COLUMN_SIZE. Voor meer informatie, zie Kolomgrootte, Decimale cijfers, Transfer Octet Length en Display Size in Appendix D: Data Types.
SQL_DATA_TYPE (ODBC 3.0) 16 Smallint NIET NULL De waarde van het SQL-datatype zoals die verschijnt in het SQL_DESC_TYPE veld van de descriptor. Deze kolom is hetzelfde als de DATA_TYPE kolom, behalve voor interval- en datum-tijdgegevenstypen.

Voor interval- en datumtijddatatypes geeft het SQL_DATA_TYPE-veld in de resultaatset SQL_INTERVAL of SQL_DATETIME terug, en het SQL_DATETIME_SUB-veld geeft de subcode terug voor het specifieke interval- of datumtijddatatype. ( Zie Bijlage D: Gegevenstypes.)
SQL_DATETIME_SUB (ODBC 3.0) 17 Smallint Wanneer de waarde van SQL_DATA_TYPE SQL_DATETIME of SQL_INTERVAL is, bevat deze kolom de datetime/interval-subcode. Voor andere datatypes dan datum, tijd en interval is dit veld NULL.

Voor interval- of datetime-datatypes geeft het SQL_DATA_TYPE-veld in de resultaatset SQL_INTERVAL of SQL_DATETIME terug, en het SQL_DATETIME_SUB-veld geeft de subcode voor het specifieke interval- of datetime-datatype. ( Zie Bijlage D: Gegevenstypes.)
NUM_PREC_RADIX (ODBC 3.0) 18 Integer Als het datatype een benaderende numeriek type is, bevat deze kolom de waarde 2 om aan te geven dat COLUMN_SIZE een aantal bits specificeert. Voor exacte numerieke types bevat deze kolom de waarde 10 om aan te geven dat COLUMN_SIZE een aantal decimale cijfers specificeert. Anders is deze kolom NULL.
INTERVAL_PRECISION (ODBC 3.0) 19 Smallint Als het datatype een intervaldatatype is, bevat deze kolom de waarde van de intervalleidende precisie. ( Zie Interval Data Type Precisie in Bijlage D: Data Types.) Anders is deze kolom NULL.

Attribuutinformatie kan van toepassing zijn op datatypes of op specifieke kolommen in een resultaatset. SQLGetTypeInfo geeft informatie terug over attributen die gekoppeld zijn aan datatypes; SQLColAttribute geeft informatie terug over attributen die gekoppeld zijn aan kolommen in een resultaatset.

Voor informatie over Zien!
Een buffer koppelen aan een kolom in een resultatenset SQLBindCol, functie
Verwerking van instructie annuleren SQLCancel, functie
Informatie teruggeven over een kolom in een resultaatset SQLColAttribuutfunctie
Een gegevensblok ophalen of door een resultatenset schuiven SQLFetchScroll, functie
Het ophalen van een enkele rij of een datablok in een vooruit-only richting SQLFetch, functie
Informatie teruggeven over een driver of databron SQLGetInfo-functie