Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pierwszą decyzją, którą należy podjąć podczas konstruowania instrukcji SQL, jest gramatyka do użycia. Oprócz gramatyki dostępnych w różnych organach standardów, takich jak Open Group, ANSI i ISO, praktycznie każdy dostawca DBMS definiuje własną gramatykę, z których każda różni się nieco od standardu.
Dodatek C: Gramatyka SQL opisuje minimalną gramatykę SQL, którą muszą obsługiwać wszystkie sterowniki ODBC. Ta gramatyka jest podzbiorem poziomu podstawowego SQL-92. Sterowniki mogą obsługiwać dodatkową gramatykę zgodną z poziomami Pośrednim, Pełnym lub Przejściowym FIPS 127-2 zdefiniowanymi przez standard SQL-92. Aby uzyskać więcej informacji, zobacz Minimalna gramatyka SQL w dodatku C: Gramatyka SQL i SQL-92.
Dodatek C definiuje również sekwencje ucieczki zawierające standardową gramatykę dla powszechnie dostępnych funkcji językowych, takich jak sprzężenia zewnętrzne, które nie są objęte gramatyką SQL-92. Aby uzyskać więcej informacji, zobacz Sekwencje ucieczki ODBC w dodatku C: Gramatyka SQL i Sekwencje ucieczki, w tej sekcji.
Wybrana gramatyka wpływa na sposób przetwarzania instrukcji przez sterownik. Sterowniki muszą modyfikować SQL zgodny z SQL-92 oraz specjalne sekwencje zdefiniowane przez ODBC na SQL specyficzne dla systemu DBMS. Ponieważ większość składni SQL jest oparta na co najmniej jednym z różnych standardów, większość sterowników SQL niewiele robi lub wcale nie pracuje, aby spełnić ten wymóg. Często polega tylko na wyszukiwaniu sekwencji ucieczki zdefiniowanych przez ODBC i zastępowaniu ich gramatyką specyficzną dla systemu DBMS. Gdy sterownik napotka gramatykę, która nie rozpoznaje, zakłada, że gramatyka jest specyficzna dla systemu DBMS i przekazuje instrukcję SQL bez modyfikacji źródła danych do wykonania.
W związku z tym istnieją naprawdę dwie opcje gramatyki do użycia: gramatyka SQL-92 (i sekwencje ucieczki ODBC) i gramatyka specyficzna dla systemu DBMS. Spośród tych dwóch, tylko gramatyka SQL-92 jest interoperacyjna, więc wszystkie aplikacje interoperacyjne powinny jej używać. Aplikacje, które nie są możliwe do współdziałania, mogą używać gramatyki SQL-92 lub gramatyki specyficznej dla systemu DBMS. Gramatyki specyficzne dla systemu DBMS mają dwie zalety: mogą wykorzystywać wszystkie funkcje, które nie są objęte programem SQL-92, i są nieznacznie szybsze, ponieważ sterownik nie musi ich modyfikować. Tę ostatnią funkcję można częściowo wymusić, ustawiając atrybut instrukcji SQL_ATTR_NOSCAN, który uniemożliwia sterownikowi wyszukiwanie i zastępowanie sekwencji ucieczki.
Jeśli jest używana gramatyka SQL-92, aplikacja może dowiedzieć się, jak jest ona modyfikowana przez sterownik, wywołując sqlNativeSql. Jest to często przydatne podczas debugowania aplikacji. SQLNativeSql akceptuje instrukcję SQL i zwraca ją po jej zmodyfikowaniu przez sterownik. Ponieważ ta funkcja znajduje się na poziomie zgodności interfejsu podstawowego, jest obsługiwana przez wszystkie sterowniki.