Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ovladač Microsoft JDBC pro SQL Server podporuje použití únikových sekvencí SQL, jak je definováno v rozhraní JDBC API. Escape sekvence se používají v příkazu SQL k tomu, aby sdělily ovladači, že uniková část řetězce SQL by měla být zpracována odlišně. Když ovladač JDBC zpracuje escapovanou část řetězce SQL, přeloží tuto část řetězce do kódu SQL, kterému SQL Server rozumí.
Existuje pět typů únikových sekvencí požadovaných rozhraním API JDBC, přičemž všechny jsou podporovány ovladačem JDBC.
- Zástupné znaky LIKE
- Zpracování funkcí
- Literály data a času
- Volání uložených procedur
- Vnější spojení
- Omezení syntaxe úniku
Syntaxe escape sekvence používaná ovladačem JDBC je následující:
{keyword ...parameters...}
Poznámka:
Zpracování escape sekvencí SQL je vždy zapnuté pro ovladač JDBC.
Následující části popisují pět typů únikových sekvencí a jejich podporu ovladačem JDBC.
LIKE zástupné znaky literálů
Ovladač JDBC podporuje {escape 'escape character'} syntaxi pro použití zástupných znaků klauzule LIKE jako literály. Například následující kód vrátí hodnoty pro sloupec 3, kde hodnota sloupce2 doslova začíná podtržítkem (a ne jejím použitím se zástupnými znaky).
ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2
LIKE '\\_%' {escape '\\'}");
Poznámka:
Řídicí sekvence musí být na konci příkazu SQL. U více příkazů SQL v příkazovém řetězci musí být escape sekvence na konci každého relevantního SQL příkazu.
Zpracování funkcí
Ovladač JDBC podporuje únikové sekvence funkcí v příkazech SQL s následující syntaxí:
{fn functionName}
kde functionName je funkce podporovaná ovladačem JDBC. Například:
SELECT {fn UCASE(Name)} FROM Employee
Následující tabulka uvádí různé funkce podporované ovladačem JDBC při použití únikové sekvence funkce:
| Řetězcové funkce | Číselné funkce | Funkce DateTime | Systémové funkce |
|---|---|---|---|
| standard ASCII CHAR CONCAT DIFFERENCE INSERT LCASE LEFT Délka VYHLEDEJTE LTRIM OPAKUJTE REPLACE RIGHT RTRIM SOUNDEX SPACE SUBSTRING UCASE |
ABS ACOS ASIN ATAN ATAN2 CEILING COS COT DEGREES EXP FLOOR LOG LOG10 MOD PI POWER RADIÁNY RAND ROUND SIGN SIN SQRT TAN ZKRÁTIT |
CURDATE CURTIME DenNázev DENOFMONTH DAYOFWEEK DEN_ROKU EXTRAKT HOUR MINUTE MONTH NÁZEV MĚSÍCE TEĎ ČTVRT SECOND TIMESTAMPADD TIMESTAMPDIFF TÝDEN YEAR |
DATABASE IFNULL USER |
Poznámka:
Pokud se pokusíte použít funkci, kterou databáze nepodporuje, dojde k chybě.
Literály data a času
Úniková syntaxe pro literály data, času a časového razítka je následující:
{literal-type 'value'}
kde literal-type je jedna z následujících možností:
| Typ literálu | Description | Formát hodnoty |
|---|---|---|
| d | Date | yyyy-mm-dd |
| t | Time | hh:mm:ss [1] |
| Ts | Časové razítko | yyyy-mm-dd hh:mm:ss[.f...] |
Například:
UPDATE Orders SET OpenDate={d '2005-01-31'}
WHERE OrderID=1025
Volání uložených procedur
Ovladač JDBC podporuje syntaxi escape {? = call proc_name(?,...)} a {call proc_name(?,...)} pro volání uložených procedur, v závislosti na tom, zda potřebujete zpracovat návratový parametr.
Procedura je spustitelný objekt uložený v databázi. Obecně platí, že jde o jeden nebo více příkazů SQL, které byly předkompilovány. Syntaxe únikové sekvence pro volání uložené procedury je následující:
{[?=]call procedure-name[([parameter][,[parameter]]...)]}
kde procedure-name určuje název uložené procedury a parameter určuje parametr uložené procedury.
Další informace o použití call escape sekvence s uloženými procedurami naleznete v části Použití příkazů s uloženými procedurami.
Vnější spojení
Ovladač JDBC podporuje syntaxi levého, pravého a úplného vnějšího spojení SQL92. Sekvence pro escape pro vnější spojení je následující:
{oj outer-join}
kde vnější spojení je:
table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition
kde table-reference je název tabulky a search-condition jedná se o podmínku spojení, kterou chcete použít pro tabulky.
Například:
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'
Ovladač JDBC podporuje následující řídicí sekvence vnějšího spojení:
- Levé vnější sloučení
- Pravé vnější spojení
- Úplná vnější spojení
- Vnořené vnější spojení
Omezení syntaxe úniku
Poznámka:
Syntaxe escape LIMIT je podporována pouze ovladačem Microsoft JDBC Driver 4.2 (nebo vyšší) pro SQL Server při použití verze JDBC 4.1 nebo vyšší.
Úniková syntaxe pro LIMIT je následující:
LIMIT <rows> [OFFSET <row offset>]
Syntaxe pro únik má dvě části: <řádky> jsou povinné a určují počet řádků, které se mají vrátit. POSUN a <řádkový posun> jsou volitelné a určují počet řádků, které se mají přeskočit před začátkem vracení řádků. Ovladač JDBC podporuje pouze povinnou část tím, že transformuje dotaz tak, aby místo LIMIT používal TOP. SQL Server nepodporuje klauzuli LIMIT. Ovladač JDBC nepodporuje volitelný <posun> řádku a ovladač vyvolá výjimku, pokud je použit.