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.
Sterownik JDBC firmy Microsoft dla programu SQL Server obsługuje używanie sekwencji ucieczki SQL zgodnie z definicją interfejsu API JDBC. Sekwencje ucieczki są używane w instrukcji SQL, aby poinformować sterownik, że unikniętą część ciągu SQL powinna być obsługiwana inaczej. Gdy sterownik JDBC przetwarza unikniętą część ciągu SQL, tłumaczy ten fragment ciągu na kod SQL, który rozumie program SQL Server.
Istnieje pięć typów sekwencji ucieczki, których wymaga interfejs API JDBC, a wszystkie są obsługiwane przez sterownik JDBC:
- Podobnie jak literały symboli wieloznacznych
- Obsługa funkcji
- Literały daty i godziny
- Wywołania procedury składowanej
- Sprzężenia zewnętrzne
- Ogranicz składnię ucieczki
Składnia sekwencji ucieczki używana przez sterownik JDBC jest następująca:
{keyword ...parameters...}
Uwaga / Notatka
Przetwarzanie SQL escape jest zawsze włączone dla sterownika JDBC.
W poniższych sekcjach opisano pięć typów sekwencji ucieczki oraz sposób ich obsługi przez sterownik JDBC.
Literały symboli wieloznacznych LIKE
Sterownik JDBC obsługuje składnię {escape 'escape character'}, która pozwala używać symboli wieloznacznych klauzuli LIKE jako literałów. Na przykład poniższy kod zwróci wartości kolumny col3, gdzie wartość kolumny col2 dosłownie zaczyna się od podkreślenia (a nie użycia symboli wieloznacznych).
ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2
LIKE '\\_%' {escape '\\'}");
Uwaga / Notatka
Sekwencja ucieczki musi znajdować się na końcu instrukcji SQL. W przypadku wielu instrukcji SQL w ciągu polecenia sekwencja ucieczki musi znajdować się na końcu każdej odpowiedniej instrukcji SQL.
Obsługa funkcji
Sterownik JDBC obsługuje sekwencje ucieczki funkcji w instrukcjach SQL z następującą składnią:
{fn functionName}
gdzie functionName jest funkcją obsługiwaną przez sterownik JDBC. Przykład:
SELECT {fn UCASE(Name)} FROM Employee
W poniższej tabeli wymieniono różne funkcje obsługiwane przez sterownik JDBC podczas korzystania z sekwencji ucieczki funkcji:
| Funkcje ciągów | Funkcje liczbowe | Funkcje daty/godziny | Funkcje systemowe |
|---|---|---|---|
| ASCII CHAR CONCAT DIFFERENCE INSERT LCASE LEFT DŁUGOŚĆ ZLOKALIZUJ LTRIM POWTÓRZ REPLACE RIGHT RTRIM SOUNDEX SPACE SUBSTRING UCASE |
ABS ACOS ASIN ATAN ATAN2 CEILING COS COT DEGREES EXP FLOOR DZIENNIK LOG10 MOD PI POWER RADIANS RAND ROUND SIGN grzech SQRT TAN SKRÓCIĆ |
CURDATE CURTIME NAZWA_DNIA DAYOFMONTH DAYOFWEEK DZIEŃ_ROKU EKSTRAKT HOUR MINUTE MONTH NAZWAMIESIĄCA TERAZ ĆWIARTKA SECOND TIMESTAMPADD TIMESTAMPDIFF TYDZIEŃ YEAR |
DATABASE IFNULL USER |
Uwaga / Notatka
Jeśli spróbujesz użyć funkcji, której baza danych nie obsługuje, wystąpi błąd.
Literały daty i godziny
Składnia znaków ucieczki dla literałów daty, godziny i znacznika czasu jest następująca:
{literal-type 'value'}
gdzie literal-type jest jednym z następujących elementów:
| Typ literału | Description | Format wartości |
|---|---|---|
| d | Date | rrrr-mm-dd |
| t | Time | hh:mm:ss [1] |
| Ts | Sygnatura czasowa | rrrr-mm-dd hh:mm:ss[.f...] |
Przykład:
UPDATE Orders SET OpenDate={d '2005-01-31'}
WHERE OrderID=1025
Wywołania procedury składowanej
Sterownik JDBC obsługuje składnię {? = call proc_name(?,...)} i {call proc_name(?,...)} ucieczki dla wywołań procedur składowanych, w zależności od tego, czy należy przetworzyć parametr zwracany.
Procedura jest obiektem wykonywalnym przechowywanym w bazie danych. Ogólnie rzecz biorąc, jest to co najmniej jedna instrukcja SQL, która została wstępnie skompilowana. Składnia sekwencji ucieczki do wywoływania procedury składowanej jest następująca:
{[?=]call procedure-name[([parameter][,[parameter]]...)]}
gdzie procedure-name określa nazwę procedury składowanej i parameter określa parametr procedury składowanej.
Aby uzyskać więcej informacji na temat używania call sekwencji ucieczki z procedurami składowanymi, zobacz Using Statements with Stored Procedures (Używanie instrukcji z procedurami składowanymi).
Sprzężenia zewnętrzne
Sterownik JDBC obsługuje składnię sprzężenia SQL92 dla lewego, prawego i pełnego sprzężenia zewnętrznego. Sekwencja ucieczki sprzężeń zewnętrznych jest następująca:
{oj outer-join}
gdzie łączenie zewnętrzne:
table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition
gdzie table-reference jest nazwą tabeli i search-condition jest warunkiem sprzężenia, którego chcesz użyć dla tabel.
Przykład:
SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status
FROM {oj Customers LEFT OUTER JOIN
Orders ON Customers.CustID=Orders.CustID}
WHERE Orders.Status='OPEN'
Następujące sekwencje wyjścia połączeń zewnętrznych są obsługiwane przez sterownik JDBC:
- Lewe sprzężenia zewnętrzne
- Prawe sprzężenia zewnętrzne
- Pełne sprzężenia zewnętrzne
- Zagnieżdżone sprzężenia zewnętrzne
Ogranicz składnię ucieczki
Uwaga / Notatka
Składnia LIMIT escape jest obsługiwana tylko przez Microsoft JDBC Driver 4.2 (lub nowszy) dla SQL Server, gdy używamy JDBC w wersji 4.1 lub nowszej.
Składnia ucieczkowa dla LIMIT wygląda następująco:
LIMIT <rows> [OFFSET <row offset>]
Składnia ucieczki ma dwie części: <wiersze> jest obowiązkowa i określa liczbę wierszy do zwrócenia. OFFSET i <przesunięcie wierszy> są opcjonalne i określają liczbę wierszy do pominięcia przed rozpoczęciem ich zwracania. Sterownik JDBC obsługuje tylko obowiązkową część, przekształcając zapytanie w celu użycia funkcji TOP zamiast LIMIT. Program SQL Server nie obsługuje klauzuli LIMIT. Sterownik JDBC nie obsługuje opcjonalnego <przesunięcia> wiersza, a sterownik zgłosi wyjątek, jeśli jest używany.