Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft JDBC-drivrutinen för SQL Server stöder användning av SQL-escape-sekvenser, enligt definitionen i JDBC-API:et. Escape-sekvenser används i en SQL-instruktion för att tala om för drivrutinen att den undantagna delen av SQL-strängen ska hanteras på ett annat sätt. När JDBC-drivrutinen bearbetar den undantagna delen av en SQL-sträng översätts den delen av strängen till SQL-kod som SQL Server förstår.
Det finns fem typer av escape-sekvenser som JDBC-API:et kräver, och alla stöds av JDBC-drivrutinen:
- LIKE jokerteckenliteraler
- Funktionshantering
- Datum- och tidsliteraler
- Lagrat proceduranrop
- Yttre kopplingar
- Begränsa escape-syntax
Escape-sekvenssyntaxen som används av JDBC-drivrutinen är följande:
{keyword ...parameters...}
Anmärkning
SQL Escape-bearbetning är alltid aktiverat för JDBC-drivrutinen.
I följande avsnitt beskrivs de fem typerna av escape-sekvenser och hur de stöds av JDBC-drivrutinen.
LIKE jokerteckenliteraler
JDBC-drivrutinen stöder syntaxen {escape 'escape character'} för att använda LIKE-satsens jokertecken bokstavligt. Följande kod returnerar till exempel värden för col3, där värdet för col2 bokstavligen börjar med ett understreck (och inte dess jokerteckenanvändning).
ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2
LIKE '\\_%' {escape '\\'}");
Anmärkning
Escape-sekvensen måste vara i slutet av SQL-instruktionen. För flera SQL-instruktioner i en kommandosträng måste escape-sekvensen finnas i slutet av varje relevant SQL-instruktion.
Funktionshantering
JDBC-drivrutinen stöder funktionsutrymningssekvenser i SQL-instruktioner med följande syntax:
{fn functionName}
där functionName är en funktion som stöds av JDBC-drivrutinen. Till exempel:
SELECT {fn UCASE(Name)} FROM Employee
I följande tabell visas de olika funktioner som stöds av JDBC-drivrutinen när du använder en funktions escape-sekvens:
| Strängfunktioner | Numeriska funktioner | Datum- och tidsfunktioner | Systemfunktioner |
|---|---|---|---|
| ASCII CHAR CONCAT DIFFERENCE INSERT LCASE LEFT LÄNGD LOKALISERA LTRIM REPETERA REPLACE RIGHT RTRIM SOUNDEX SPACE SUBSTRING UCASE |
ABS ACOS ASIN ATAN ATAN2 CEILING COS FÄLTBÄDD DEGREES EXP FLOOR LOG LOG10 MOD PI POWER RADIANS RAND ROUND SIGN Synd SQRT TAN Trunkera |
CURDATE CURTIME DAGNAMN DAYOFMONTH DAYOFWEEK DAGPÅÅRET UTDRAG HOUR MINUTE MONTH MÅNADSNAMN NU FJÄRDEDEL SECOND TIMESTAMPADD TIMESTAMPDIFF VECKA YEAR |
DATABAS IFNULL USER |
Anmärkning
Om du försöker använda en funktion som databasen inte stöder uppstår ett fel.
Datum- och tidsliteraler
Escape-syntaxen för datum, tid och tidsstämpelliteraler är följande:
{literal-type 'value'}
var literal-type är något av följande:
| Literaltyp | Description | Värdeformat |
|---|---|---|
| d | Date | åååå-mm-dd |
| t | Time | hh:mm:ss [1] |
| ts | Tidsstämpel | åååå-mm-dd hh:mm:ss[.f...] |
Till exempel:
UPDATE Orders SET OpenDate={d '2005-01-31'}
WHERE OrderID=1025
Anrop av lagrade procedurer
JDBC-drivrutinen stöder {? = call proc_name(?,...)} och {call proc_name(?,...)} escape-syntaxen för lagrade proceduranrop, beroende på om du behöver bearbeta en returparameter.
En procedur är ett körbart objekt som lagras i databasen. I allmänhet är det en eller flera SQL-instruktioner som har förkompilerats. Escape-sekvenssyntaxen för att anropa en lagrad procedur är följande:
{[?=]call procedure-name[([parameter][,[parameter]]...)]}
där procedure-name anger namnet på en lagrad procedur och parameter anger en parameter för lagrad procedur.
Mer information om hur du använder escape-sekvensen call med lagrade procedurer finns i Använda instruktioner med lagrade procedurer.
Yttre kopplingar
JDBC-drivrutinen stöder SQL92 vänster, höger och fullständig yttre kopplingssyntax. Escape-sekvensen för yttre kopplingar är följande:
{oj outer-join}
där yttre koppling är:
table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition
där table-reference är ett tabellnamn och search-condition är det kopplingsvillkor som du vill använda för tabellerna.
Till exempel:
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'
Följande outer join-escape-sekvenser stöds av JDBC-drivrutinen.
- Vänster yttre kopplingar
- Höger yttre kopplingar
- Fullständiga yttre kopplingar
- Kapslade yttre kopplingar
Begränsa escape-syntax
Anmärkning
LIMIT-escape-syntaxen stöds endast av Microsoft JDBC Driver 4.2 (eller senare) för SQL Server när du använder JDBC 4.1 eller senare.
Escape-syntaxen för LIMIT är följande:
LIMIT <rows> [OFFSET <row offset>]
Escape-syntaxen har två delar: <rader> är obligatoriska och anger antalet rader som ska returneras. OFFSET och <radförskjutning> är valfria och anger antalet rader som ska hoppa över innan du börjar returnera rader. JDBC-drivrutinen stöder endast den obligatoriska delen genom att transformera frågan så att den använder TOP i stället för LIMIT. SQL Server stöder inte LIMIT-satsen. JDBC-drivrutinen stöder inte den valfria <radförskjutningen> och drivrutinen utlöser ett undantag om den används.