Utilizzo delle sequenze di escape SQL
Il driver JDBC per Microsoft SQL Server 2005 supporta l'utilizzo di sequenze di escape SQL, come definite dall'API JDBC. Le sequenze di escape vengono utilizzate all'interno di un'istruzione SQL per indicare al driver che la parte della stringa SQL per cui vengono utilizzati caratteri di escape deve essere gestita in modo diverso. Quando la parte della stringa SQL per cui vengono utilizzati caratteri di escape viene elaborata dal driver JDBC, tale parte viene tradotta in codice SQL compreso da SQL Server.
L'API JDBC richiede cinque tipi di sequenze di escape, tutti supportati dal driver JDBC:
Valori letterali dei caratteri jolly LIKE
Gestione delle funzioni
Valori letterali data e ora
Chiamate di stored procedure
Outer join
La sintassi della sequenza di escape utilizzata dal driver JDBC è la seguente:
{keyword ...parameters...}
Nota
L'elaborazione delle sequenze di escape SQL è sempre attivata per il driver JDBC.
Nelle sezioni seguenti vengono descritti i cinque tipi di sequenze di escape e viene illustrato in che modo sono supportati dal driver JDBC:
Valori letterali dei caratteri jolly LIKE
Il driver JDBC supporta la sintassi {escape 'escape character'}
per l'utilizzo dei caratteri jolly della clausola LIKE come valori letterali. Il codice seguente restituisce, ad esempio, i valori per col3 se il valore di col2 inizia letteralmente con un carattere di sottolineatura (e non nel caso di utilizzo del carattere jolly).
ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2
LIKE '\\_%' {escape '\\'}");
Nota
La sequenza di escape deve essere alla fine dell'istruzione SQL. Se vi sono più istruzioni SQL in una stringa di comando, la sequenza di escape deve essere alla fine di ogni istruzione SQL rilevante.
Gestione delle funzioni
Il driver JDBC supporta le sequenze di escape delle funzioni nelle istruzioni SQL con la sintassi seguente:
{fn functionName}
dove functionName
è una funzione supportata dal driver JDBC. Ad esempio:
SELECT {fn UCASE(Name)} FROM Employee
Nella tabella seguente sono elencate le varie funzioni supportate dal driver JDBC in caso di utilizzo di una sequenza di escape delle funzioni:
Funzioni stringa | Funzioni numeriche | Funzioni data/ora | Funzioni di sistema |
---|---|---|---|
ASCII CHAR CONCATENA DIFFERENCE INSERT LCASE SINISTRA LUNGHEZZA LOCATE RITAGLIAINIZIO REPEAT SOSTITUISCI DESTRA RITAGLIAFINE SOUNDEX SPACE SOTTOSTRINGA UCASE |
ABS ACOS ASIN ATAN ATAN2 CEILING COS COT DEGREES EXP FLOOR LOG LOG10 RESTO PI POWER RADIANS RAND ARROTONDA SIGN SIN SQRT TAN TRUNCATE |
CURDATE CURTIME DAYNAME DAYOFMONTH GIORNOSETT GIORNOANNO EXTRACT ORA MINUTO MESE MONTHNAME ADESSO TRIMESTRE SECONDO TIMESTAMPADD TIMESTAMPDIFF SETTIMANA ANNO |
DATABASE IFNULL USER |
Nota
Se si tenta di utilizzare una funzione non supportata dal database, si verifica un errore.
Valori letterali data e ora
La sintassi di escape per i valori letterali data, ora e timestamp è la seguente:
{literal-type 'value'}
dove literal-type
è uno dei tipi seguenti:
Tipo di valore letterale | Descrizione | Formato del valore |
---|---|---|
d |
Data |
aaaa-mm-gg |
t |
Ora |
hh:mm:ss [1] |
ts |
TimeStamp |
aaaa-mm-gg hh:mm:ss[.f...] |
Ad esempio:
UPDATE Orders SET OpenDate={d '2005-01-31'}
WHERE OrderID=1025
Chiamate di stored procedure
Il driver JDBC supporta la sintassi di escape {? = call proc_name(?,...)}
e {call proc_name(?,...)}
per le chiamate di stored procedure, in base al fatto che si debba o meno elaborare un parametro restituito.
Una stored procedure è un oggetto eseguibile archiviato nel database. In genere, si tratta di una o più istruzioni SQL precompilate. La sintassi della sequenza di escape per la chiamata di un stored procedure è la seguente:
{[?=]call procedure-name[([parameter][,[parameter]]...)]}
dove procedure-name
specifica il nome di una stored procedure e parameter
specifica un parametro della stored procedure.
Per ulteriori informazioni sull'utilizzo della sequenza di escape call
con le stored procedure, vedere Utilizzo delle istruzioni con le stored procedure.
Outer join
Il driver JDBC supporta la sintassi left, right e full outer join SQL92. La sequenza di escape per gli outer join è la seguente:
{oj outer-join}
dove outer-join è:
table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition
dove table-reference
è il nome di una tabella e search-condition
è la condizione di join che si desidera utilizzare per le tabelle.
Ad esempio:
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'
Le sequenze di escape dell'outer join seguenti sono supportate dal driver JDBC:
Left outer join
Right outer join
Full outer join
Outer join nidificati