Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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.