Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
Gerelateerde functies
| 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 |