Udostępnij przez


Czy utworzono zestaw wyników?

W większości sytuacji programiści aplikacji wiedzą, czy instrukcje wykonywane przez aplikację spowodują utworzenie zestawu wyników. Dzieje się tak, jeśli aplikacja używa zakodowanych na sztywno instrukcji SQL napisanych przez programistę. Zwykle jest tak, gdy aplikacja konstruuje instrukcje SQL w czasie wykonywania: programista może łatwo dołączyć kod, który flaguje, czy jest tworzona instrukcja SELECT , czy instrukcja INSERT . W kilku sytuacjach programista nie może wiedzieć, czy instrukcja utworzy zestaw wyników. Jest to prawdą, jeśli aplikacja umożliwia użytkownikowi wprowadzanie i wykonywanie instrukcji SQL. Jest to również prawdą, gdy aplikacja tworzy instrukcję w czasie wykonywania procedury.

W takich przypadkach aplikacja wywołuje metodę SQLNumResultCols , aby określić liczbę kolumn w zestawie wyników. Jeśli jest to wartość 0, instrukcja nie utworzyła zestawu wyników; Jeśli jest to jakakolwiek inna liczba, instrukcja utworzyła zestaw wyników.

Aplikacja może wywołać funkcję SQLNumResultCols w dowolnym momencie po przygotowaniu lub wykonaniu instrukcji. Jednak ponieważ niektóre źródła danych nie mogą łatwo opisać zestawów wyników, które zostaną utworzone przez przygotowane instrukcje, wydajność będzie cierpieć, jeśli funkcja SQLNumResultCols zostanie wywołana po przygotowaniu instrukcji, ale zanim zostanie wykonana.

Niektóre źródła danych obsługują również określanie liczby wierszy zwracanych przez instrukcję SQL w zestawie wyników. W tym celu aplikacja wywołuje funkcję SQLRowCount. Dokładnie to, co reprezentuje liczba wierszy, jest wskazywane przez ustawienie SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 lub SQL_STATIC_CURSOR_ATTRIBUTES2 opcji (w zależności od typu kursora) zwróconych przez wywołanie polecenia SQLGetInfo. Ta maska bitów wskazuje dla każdego typu kursora, czy zwracana liczba wierszy jest dokładna, przybliżona lub nie jest w ogóle dostępna. To, czy zmiany dokonane za pomocą poleceń SQLBulkOperations lub SQLSetPos, lub poprzez pozycjonowane instrukcje aktualizacji lub usuwania wpływają na liczby wierszy dla kursorów statycznych lub opartych na zestawie kluczy, zależy od innych bitów zwracanych przez te same wcześniej wymienione argumenty opcji. Aby uzyskać więcej informacji, zobacz opis funkcji SQLGetInfo .