Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Soulad
Představená verze: ODBC 3.0 Shoda s normami: ISO 92
Summary
SQLGetDescRec vrací aktuální nastavení nebo hodnoty více polí deskriptorového záznamu. Vrácená pole popisují název, typ dat a úložiště sloupcových nebo parametrových dat.
Syntax
SQLRETURN SQLGetDescRec(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLCHAR * Name,
SQLSMALLINT BufferLength,
SQLSMALLINT * StringLengthPtr,
SQLSMALLINT * TypePtr,
SQLSMALLINT * SubTypePtr,
SQLLEN * LengthPtr,
SQLSMALLINT * PrecisionPtr,
SQLSMALLINT * ScalePtr,
SQLSMALLINT * NullablePtr);
Arguments
DescriptorHandle
[Vstup] Handle popisu.
Přečíslovat
[Vstup] Označuje deskriptorový záznam, ze kterého žádost hledá informace. Descriptorové záznamy jsou číslovány od 1, přičemž číslo 0 je záznam záložek. Argument RecNumber musí být menší nebo roven hodnotě SQL_DESC_COUNT. Pokud je RecNumber menší nebo rovno SQL_DESC_COUNT ale řádek neobsahuje data pro sloupec nebo parametr, volání SQLGetDescRec vrátí výchozí hodnoty polí. (Pro více informací viz "Inicializace deskriptorových polí" v SQLSetDescField.)
Název
[Výstup] Ukazatel na buffer, do kterého se vrací SQL_DESC_NAME pole pro descriptorový záznam.
Pokud je Name NULL, StringLengthPtr stále vrátí celkový počet znaků (kromě znaku null-termination pro data znaků), které lze vrátit v bufferu ukazovaném pomocí Name.
BufferLength
[Vstup] Délka *Name bufferu, v znacích.
StringLengthPtr
[Výstup] Ukazatel na buffer, do kterého se vrací počet znaků dat, které je možné vrátit v *Name bufferu, s výjimkou znaku null-termination. Pokud byl počet znaků větší nebo roven BufferLength, data v *Name jsou zkrácena na BufferLength minus délka znaku null-termination a jsou null-terminována ovladačem.
TypePtr
[Výstup] Ukazatel na buffer, do kterého se vrací hodnota SQL_DESC_TYPE pole pro deskriptorový záznam.
SubTypePtr
[Výstup] Pro záznamy, jejichž typ je SQL_DATETIME nebo SQL_INTERVAL, je to ukazatel na buffer, do kterého se vrací hodnota SQL_DESC_DATETIME_INTERVAL_CODE pole.
LengthPtr
[Výstup] Ukazatel na buffer, do kterého se vrací hodnota SQL_DESC_OCTET_LENGTH pole pro deskriptorový záznam.
PrecisionPtr
[Výstup] Ukazatel na buffer, do kterého se vrací hodnota SQL_DESC_PRECISION pole pro descriptorový záznam.
ScalePtr
[Výstup] Ukazatel na buffer, do kterého se vrací hodnota SQL_DESC_SCALE pole pro deskriptorový záznam.
NullablePtr
[Výstup] Ukazatel na buffer, do kterého se vrací hodnota SQL_DESC_NULLABLE pole pro deskriptorový záznam.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_NO_DATA nebo SQL_INVALID_HANDLE.
SQL_NO_DATA se vrátí, pokud je RecNumber větší než aktuální počet descriptorových záznamů.
SQL_NO_DATA se vrátí, pokud je DescriptorHandle IRD handle a příkaz je ve stavu připravený nebo vykonáný, ale nebyl k němu přiřazen otevřený kurzor.
Diagnostika
Když SQLGetDescRec vrátí SQL_ERROR nebo SQL_SUCCESS_WITH_INFO, lze získat přidruženou hodnotu SQLstate, pokud použijeme HandleType SQL_HANDLE_DESC a HandleDescriptorHandle. Následující tabulka uvádí hodnoty SQLSTATE, které obvykle vrací SQLGetDescRec , a vysvětluje každou z nich v kontextu této funkce; notace "(DM)" předchází popisům SQLstavů vráceným Správcem ovladačů. Návratový kód přidružený ke každé hodnotě SQLSTATE je SQL_ERROR, pokud není uvedeno jinak.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Obecné upozornění | Informační zpráva specifická pro řidiče (Funkce vrátí SQL_SUCCESS_WITH_INFO.) |
| 01004 | Řetězcová data, zkrácená vpravo | Buffer *Name nebyl dostatečně velký, aby vrátil celé pole deskriptoru. Proto bylo pole zkráceno. Délka neomezeného deskriptorového pole se vrací v *StringLengthPtr. (Funkce vrátí SQL_SUCCESS_WITH_INFO.) |
| 07009 | Index neplatných deskriptorů | Argument FieldIdentifier byl pole záznamu, argument RecNumber byl nastaven na 0 a argument DescriptorHandle byl IPD handle. (DM) Argument RecNumber byl nastaven na 0, atribut SQL_ATTR_USE_BOOKMARKS příkazu byl nastaven na SQL_UB_OFF a argument DescriptorHandle byl IRD handle. Argument RecNumber byl menší než 0. |
| 08S01 | Selhání komunikačního propojení | Komunikační propojení mezi ovladačem a zdrojem dat, ke kterému byl ovladač připojen, selhalo před dokončením zpracování funkce. |
| HY000 | Obecná chyba | Došlo k chybě, pro kterou nebyla definována žádná specifická funkce SQLSTATE a pro kterou nebyla definována žádná implementace sqlSTATE. Chybová zpráva vrácená nástrojem SQLGetDiagRec v vyrovnávací paměti *MessageText popisuje chybu a její příčinu. |
| HY001 | Chyba přidělení paměti | Ovladač nebyl schopen alokovat paměť potřebnou k podpoře nebo dokončení funkce. |
| HY007 | Související prohlášení není připraveno | DescriptorHandle byl spojen s IRD a příslušný příkazový handle nebyl ve stavu připravený ani vykonáný. |
| HY010 | Chyba posloupnosti funkcí | (DM) DescriptorHandle byl spojen s StatementHandle , pro který byla volána asynchronně vykonávající funkce (ne tato), která se stále spouštěla, když byla tato funkce vyvolána. (DM) DescriptorHandle byl spojen s StatementHandle , pro který byly volány SQLExecute, SQLExecDirect, SQLBulkOperations nebo SQLSetPos a vracely SQL_NEED_DATA. Tato funkce byla volána před odesláním dat pro všechny parametry provádění dat nebo sloupce. (DM) Pro connection handle, který je spojen s DescriptorHandle, byla volána asynchronně vykonávající funkce. Tato asynchronní funkce se stále spouštěla, když byl volán SQLGetDescRec . |
| HY013 | Chyba správy paměti | Volání funkce nelze zpracovat, protože základní objekty paměti nelze získat přístup, pravděpodobně kvůli nedostatku paměti. |
| HY117 | Připojení je pozastaveno kvůli neznámému stavu transakce. Jsou povoleny pouze funkce pro odpojení a jen pro čtení. | (DM) Další informace o pozastaveném stavu naleznete v tématu FUNKCE SQLEndTran. |
| HYT01 | Vypršel časový limit připojení | Platnost časového limitu připojení vypršela, než zdroj dat odpověděl na žádost. Časový limit připojení je nastavený prostřednictvím sqlSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Ovladač tuto funkci nepodporuje. | (DM) Ovladač spojený s DescriptorHandle tuto funkci nepodporuje. |
Comments
Aplikace může zavolat SQLGetDescRec a získat hodnoty následujících deskriptorových polí pro jeden sloupec nebo parametr:
SQL_DESC_NAME
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE (pro záznamy, jejichž typ je SQL_DATETIME nebo SQL_INTERVAL)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_NULLABLE (Určuje, zda může být hodnota sloupce NULL)
SQLGetDescRec nezískává hodnoty pro pole hlaviček.
Aplikace může zabránit návratu nastavení pole tím, že nastaví argument odpovídající tomuto poli na nulový ukazatel.
Když aplikace zavolá SQLGetDescRec k získání hodnoty pole, které není definováno pro konkrétní typ deskriptoru, funkce vrátí SQL_SUCCESS, ale hodnota vrácená pro toto pole je nedefinovaná. Například volání SQLGetDescRec pro pole SQL_DESC_NAME nebo SQL_DESC_NULLABLE v APD nebo ARD vrátí SQL_SUCCESS, ale nedefinovanou hodnotu pro dané pole.
Když aplikace zavolá SQLGetDescRec k získání hodnoty pole, které je definováno pro konkrétní typ deskriptoru, ale nemá výchozí hodnotu a ještě nebylo nastaveno, funkce vrátí SQL_SUCCESS, ale hodnota vrácená pro toto pole není definována. Pro více informací viz "Inicializace deskriptorových polí" v SQLSetDescField.
Hodnoty polí lze také získat jednotlivě voláním do SQLGetDescField. Pro popis polí v hlavičce nebo záznamu deskriptoru viz SQLSetDescField. Další informace o popisovačích naleznete v tématu Popisovače.
Související funkce
| Informace o | Podívejte se |
|---|---|
| Vázání sloupce | SQLBindCol – funkce |
| Vazba parametru | Funkce SQLBindParameter |
| Získání popisného pole | SQLGetDescField Function |
| Nastavení více deskriptorových polí | SQLSetDescRec Function |