2012-06-08 6 views
9

Pracuję nad zapytaniem i znalazłem minimalną dokumentację od firmy Microsoft w sprawie opcji TSQL "PRZEGLĄDAJ" w instrukcji select.Do czego służy opcja "PRZEGLĄDAJ" TSQL?

Widziałem PRZEGLĄDZANIE udokumentowane jako opcja dla kursorów, ale nie byłem w stanie znaleźć żadnych dobrych przykładów użycia tego, lub powodów, aby użyć PRZEGLĄDAĆ na instrukcji SELECT.

Jakie są dobre powody używania PRZEGLĄDU w instrukcji TSQL SELECT?

Używam programu SQL Server 2008 i 2012.

+1

Spójrz tutaj: http://msdn.microsoft.com/en-us/library/ms173812.aspx – Lamak

+0

Tak, przeczytałem to i udało mi się uzyskać "Tryb przeglądania umożliwia skanowanie wierszy w twojej tabeli SQL Server i aktualizuj dane w tabeli po jednym wierszu na raz "Ale jak to działa? Czy użyłbym tego, jeśli wydawanie instrukcji aktualizacji podczas pętli przez zestaw wyników? –

Odpowiedz

7

O ile mogę powiedzieć. Wydaje się, że jest to interfejs do implementacji optimistic concurrency control w aplikacji, w której jeden lub więcej użytkowników będzie uzyskiwać dostęp i aktualizować dane z tego samego źródła w tym samym czasie. Wydaje się również działać w połączeniu z kompatybilną biblioteką front end (DB-Library). Jednak wydaje się, że jest to nieco przestarzały mechanizm, ponieważ można osiągnąć wszystkie powyższe bez użycia instrukcji "For Browse". Można to dodatkowo potwierdzić koniecznością utworzenia dwóch struktur DBPROCESS, które są wynikiem biblioteki DB-Library (przestarzałej biblioteki C) "dbopen".

Ponadto tryb przeglądania wymaga dwóch struktur DBPROCESS: jeden dla Wybieranie danych i innym za aktualizację na podstawie wybranych danych . src

Here is an example korzystania z zapytania "For Browse" w połączeniu z biblioteką DB.

Ostatecznie uzasadnione byłoby stwierdzenie, że mechanizm ten nadal istnieje w celu zapewnienia kompatybilności wstecznej. Więc jeśli nie utrzymujesz klienta opartego na C przy użyciu DB-Library, nie martwiłbym się zbytnio tym sql "for clause".

Niektóre inne źródła

Jeszcze jedna obserwacja

Kursory zadeklarowane z PRZEGLĄDANIE DO PRZEGLĄDANIA muszą czekać na niezatwierdzone zmiany (wykonane przez każdego, łącznie z właścicielem kursora) tylko podczas operacji OTWÓRZ KURSOR. Po otwarciu kursora kolejne zmiany nie powodują oczekiwania kursora na . Po ponownym otwarciu kursora można go zablokować przez niezatwierdzone zmiany. src

1

Dołączanie DLA przejdziesz do zapytania SELECT lub za pomocą SET NO_BROWSETABLE ON na połączenia SQL Server mogą być wymagane w celu pobrania informacji o schemacie bardziej skomplikowany.

Może to być przydatne, jeśli aplikacja współdziała bezpośrednio lub pośrednio poprzez warstwę ODBC z programem SQL Server, ponieważ niektóre szczegóły zwrócone przez funkcję ODBC SQLColAttribute zwrócą pusty łańcuch, chyba że do instrukcji SQL SELECT dołączono PRZEGLĄDANIE.

Na przykład, jeśli Twoja aplikacja C++ używa libodbc++, a otrzymasz zestaw wyników z zapytania SELECT * FROM A, B, nie będziesz w stanie pobrać nazw kolumn z obiektu ResultSetMetaData. Jeśli jednak dodasz PRZEGLĄDAJ, nazwy tabel zostaną wypełnione poprawnie.