Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zgodność
Wprowadzona wersja: Zgodność z normami ODBC 3.0: ISO 92
Podsumowanie
SQLGetDescRec zwraca aktualne ustawienia lub wartości wielu pól rekordu deskryptora. Pola zwracane opisują nazwę, typ danych oraz przechowywanie danych kolumnowych lub parametrów.
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
DeskryptorHandle
[Input] Uchwyt deskryptoru.
NumerRekordów
[Input] Wskazuje rekord deskryptorowy, z którego wniosek poszukuje informacji. Rekordy deskryptoryczne są numerowane od 1, przy czym numer 0 to zapis zakładek. Argument RecNumber musi być mniejszy lub równy wartości SQL_DESC_COUNT. Jeśli RecNumber jest mniejszy lub równy SQL_DESC_COUNT ale wiersz nie zawiera danych dla kolumny lub parametru, wywołanie SQLGetDescRec zwróci domyślne wartości pól. (Więcej informacji można znaleźć w sekcji "Initialization of Descriptor Fields" w SQLSetDescField.)
Nazwa
[Wyjście] Wskaźnik do bufora, w którym zwraca pole SQL_DESC_NAME dla rekordu deskryptoru.
Jeśli Name jest NULL, StringLengthPtr nadal zwraca łączną liczbę znaków (z wyłączeniem znaku zakończenia zerowego dla danych znakowych) dostępnych do zwrócenia w buforze wskazanym przez Name.
BufferLength
[Input] Długość *Bufora nazwy , w znakach.
StringLengthPtr
[Wyjście] Wskaźnik do bufora, w którym zwraca się liczbę znaków danych dostępnych do zwrócenia w buforze *Nazwy , z wyłączeniem znaku zakończenia zerowego. Jeśli liczba znaków była większa lub równa BufferLength, dane w *Name są skracane do BufferLength minus długość znaku zakończenia zerowego i są przez sterownik zakończane przez null-termin.
TypePtr
[Wyjście] Wskaźnik do bufora, w którym zwraca wartość pola SQL_DESC_TYPE dla rekordu deskryptoru.
SubTypePtr
[Wyjście] Dla rekordów, których typ to SQL_DATETIME lub SQL_INTERVAL, jest to wskaźnik do bufora, w którym zwraca się wartość pola SQL_DESC_DATETIME_INTERVAL_CODE.
LengthPtr
[Wyjście] Wskaźnik do bufora, w którym zwraca wartość pola SQL_DESC_OCTET_LENGTH dla rekordu deskryptoru.
PrecisionPtr
[Wyjście] Wskaźnik do bufora, w którym zwraca wartość pola SQL_DESC_PRECISION dla rekordu deskryptoru.
ScalePtr
[Wyjście] Wskaźnik do bufora, w którym zwraca wartość pola SQL_DESC_SCALE dla rekordu deskryptoru.
NullablePtr
[Wyjście] Wskaźnik do bufora, w którym zwraca wartość pola SQL_DESC_NULLABLE dla rekordu deskryptoru.
Zwroty
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_NO_DATA lub SQL_INVALID_HANDLE.
SQL_NO_DATA zwracany, jeśli RecNumber jest większy niż aktualna liczba rekordów deskryptorów.
SQL_NO_DATA zwracany, jeśli DescriptorHandle jest uchwytem IRD, a instrukcja znajduje się w stanie przygotowanym lub wykonanym, ale nie było z nią powiązanego otwartego kursora.
Diagnostyka
Gdy SQLGetDescRec zwraca SQL_ERROR lub SQL_SUCCESS_WITH_INFO, można uzyskać powiązaną wartość SQLSTATE, wywołując SQLGetDiagRec z HandleType SQL_HANDLE_DESC oraz Handle z DescriptorHandle. Poniższa tabela przedstawia wartości SQLSTATE typowo zwracane przez SQLGetDescRec i wyjaśnia każdą z nich w kontekście tej funkcji; notacja "(DM)" poprzedza opisy stanów SQL zwracanych przez Menedżera Sterowników. Kod zwracany skojarzony z każdą wartością SQLSTATE jest SQL_ERROR, chyba że określono inaczej.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Ostrzeżenie ogólne | Komunikat informacyjny specyficzny dla sterownika. (Funkcja zwraca SQL_SUCCESS_WITH_INFO). |
| 01004 | Dane ciągów, prawe obcięte | Bufor *Nazwa nie był wystarczająco duży, by zwrócić całe pole deskryptoru. W związku z tym pole zostało obcięte. Długość nieobciętego pola deskryptorowego zwracana jest w *StringLengthPtr. (Funkcja zwraca SQL_SUCCESS_WITH_INFO). |
| 07009 | Nieprawidłowy indeks deskryptorów | Argument FieldIdentifier był polem rekordu, argument RecNumber ustawiono na 0, a argument DescriptorHandle to uchwyt IPD. (DM) Argument RecNumber był ustawiony na 0, a atrybut SQL_ATTR_USE_BOOKMARKS na SQL_UB_OFF, a argument DescriptorHandle był handlem IRD. Argument RecNumber był mniejszy niż 0. |
| 08S01 | Błąd połączenia komunikacyjnego | Połączenie komunikacyjne między sterownikiem a źródłem danych, z którym sterownik został połączony, nie powiodło się przed zakończeniem przetwarzania funkcji. |
| HY000 | Błąd ogólny | Wystąpił błąd, dla którego nie było określonego stanu SQLSTATE i dla którego nie zdefiniowano parametru SQLSTATE specyficznego dla implementacji. Komunikat o błędzie zwrócony przez element SQLGetDiagRec w buforze *MessageText opisuje błąd i jego przyczynę. |
| HY001 | Błąd alokacji pamięci | Sterownik nie był w stanie przydzielić pamięci potrzebnej do wykonania lub zakończenia funkcji. |
| HY007 | Powiązane oświadczenie nie jest przygotowane | DescriptorHandle był powiązany z IRD, a powiązany uchwyt instrukcji nie znajdował się w stanie przygotowanym ani wykonanym. |
| HY010 | Błąd sekwencji funkcji | (DM) DescriptorHandle był powiązany z CommandHandle , dla którego wywoływano asynchronicznie wykonywaną funkcję (nie tę) i która nadal działała, gdy ta funkcja została wywołana. (DM) DescriptorHandle był powiązany z StatementHandle , dla którego wywoływano SQLExecute, SQLExecDirect, SQLBulkOperations lub SQLSetPos i zwracało SQL_NEED_DATA. Ta funkcja została wywołana przed wysłaniem danych dla wszystkich parametrów wykonywania danych lub kolumn. (DM) Funkcja wykonywana asynchronicznie została wywołana dla uchwytu połączenia powiązanego z DescriptorHandle. Ta asynchroniczna funkcja działała nadal, gdy wywoływano SQLGetDescRec . |
| HY013 | Błąd zarządzania pamięcią | Nie można przetworzyć wywołania funkcji, ponieważ nie można uzyskać dostępu do bazowych obiektów pamięci, prawdopodobnie z powodu niskich warunków pamięci. |
| HY117 | Połączenie jest zawieszone z powodu nieznanego stanu transakcji. Dozwolone są tylko funkcje rozłączania i tylko do odczytu. | (DM) Aby uzyskać więcej informacji na temat stanu wstrzymania, zobacz SQLEndTran, funkcja. |
| HYT01 | Upłynął limit czasu połączenia | Okres przekroczenia limitu czasu połączenia wygasł, zanim źródło danych odpowiedziało na żądanie. Limit czasu połączenia jest ustawiany za pomocą parametru SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Sterownik nie obsługuje tej funkcji | (DM) Sterownik powiązany z DescriptorHandle nie obsługuje tej funkcji. |
Comments
Aplikacja może wywołać SQLGetDescRec , aby pobrać wartości następujących pól deskryptorów dla pojedynczej kolumny lub parametru:
SQL_DESC_NAME
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE (dla zapisów, których typ to SQL_DATETIME lub SQL_INTERVAL)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_NULLABLE
SQLGetDescRec nie pobiera wartości pól nagłówków.
Aplikacja może zapobiec zwrotowi ustawienia pola, ustawiając argument odpowiadający polu na wskaźnik zerowy.
Gdy aplikacja wywołuje SQLGetDescRec , aby pobrać wartość pola niezdefiniowanego dla danego typu deskryptora, funkcja zwraca SQL_SUCCESS ale wartość zwrócona dla pola jest niezdefiniowana. Na przykład, wywołanie SQLGetDescRec dla pola SQL_DESC_NAME lub SQL_DESC_NULLABLE w APD lub ARD zwróci SQL_SUCCESS, ale niezdefiniowaną wartość dla tego pola.
Gdy aplikacja wywołuje SQLGetDescRec , aby pobrać wartość pola zdefiniowanego dla określonego typu deskryptora, które nie ma wartości domyślnej i nie zostało jeszcze ustawione, funkcja zwraca SQL_SUCCESS, ale wartość zwrócona dla pola jest niezdefiniowana. Więcej informacji można znaleźć w sekcji "Initialization of Descriptor Fields" w SQLSetDescField.
Wartości pól można również pobrać indywidualnie przez wywołanie do SQLGetDescField. Aby uzyskać opis pól w nagłówku lub rekordzie deskryptora, zobacz SQLSetDescField. Aby uzyskać więcej informacji na temat deskryptorów, zobacz Deskryptory.
Powiązane funkcje
| Aby uzyskać informacje o | Zobacz |
|---|---|
| Owiązywanie kolumny | SQLBindCol, funkcja |
| Wiązanie parametru | Funkcja SQLBindParameter |
| Uzyskanie pola deskryptorowego | Funkcja SQLGetDescField |
| Ustawianie wielu pól deskryptorowych | Funkcja SQLSetDescRec |