Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Microsoft JDBC Driver para SQL Server suporta a utilização de sequências de escape SQL, conforme definido pela API JDBC. As sequências de escape são usadas dentro de uma instrução SQL para dizer ao driver que a parte escapada da string SQL deve ser tratada de forma diferente. Quando o driver JDBC processa a parte escapada de uma string SQL, traduz essa parte da string em código SQL que o SQL Server compreende.
Existem cinco tipos de sequências de escape que a API JDBC exige, e todas são suportadas pelo driver JDBC:
- COMO os caracteres coringa
- Gestão de funções
- Data e hora literais
- Chamadas de procedimentos armazenados
- Junções exteriores
- Limitar sintaxe de escape
A sintaxe da sequência de escape usada pelo driver JDBC é a seguinte:
{keyword ...parameters...}
Observação
O processamento de escape SQL está sempre ativado para o driver JDBC.
As secções seguintes descrevem os cinco tipos de sequências de escape e como são suportadas pelo driver JDBC.
COMO os caracteres coringa
O driver JDBC suporta a sintaxe {escape 'escape character'} para usar caracteres curinga LIKE de cláusulas como literais. Por exemplo, o código seguinte devolverá valores para col3, onde o valor de col2 começa literalmente com um sublinhado (e não com o seu uso de wildcard).
ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2
LIKE '\\_%' {escape '\\'}");
Observação
A sequência de escape deve estar no final da instrução SQL. Para múltiplas instruções SQL numa cadeia de comandos, a sequência de escape tem de estar no final de cada instrução SQL relevante.
Gestão de funções
O driver JDBC suporta sequências de escape de função em instruções SQL com a seguinte sintaxe:
{fn functionName}
onde functionName é uma função suportada pelo driver JDBC. Por exemplo:
SELECT {fn UCASE(Name)} FROM Employee
A tabela seguinte lista as várias funções suportadas pelo driver JDBC ao utilizar uma sequência de escape de funções:
| Funções de cadeia de caracteres | Funções numéricas | Funções de Data-Hora | Funções do sistema |
|---|---|---|---|
| ASCII CHAR CONCAT DIFFERENCE INSERT LCASE LEFT LENGTH LOCALIZAR LTRIM REPETE REPLACE RIGHT RTRIM SOUNDEX SPACE SUBSTRING UCASE |
ABS ACOS ASIN ATAN ATAN2 CEILING COS COT DEGREES EXP FLOOR LOG LOG10 MOD PI POWER RADIANS RAND ROUND SIGN SIN SQRT TAN Truncar |
CURDATE CURTIME NOME DO DIA DIADO MÊS DIA DA SEMANA DIA DO ANO EXTRATO HOUR MINUTE MONTH NOME DO MÊS AGORA TRIMESTRE SECOND TIMESTAMPADD TIMESTAMPDIFF SEMANA YEAR |
DATABASE IFNULL USER |
Observação
Se tentar usar uma função que a base de dados não suporta, ocorrerá um erro.
Data e hora literais
A sintaxe de escape para data, hora e datas literais é a seguinte:
{literal-type 'value'}
onde literal-type é um dos seguintes:
| Tipo Literal | Description | Formato de Valor |
|---|---|---|
| d | Date | AAAA-MM-DD |
| t | Time | hh:mm:ss [1] |
| TS | Marca Temporal | yyyy-mm-dd hh:mm:ss[.f...] |
Por exemplo:
UPDATE Orders SET OpenDate={d '2005-01-31'}
WHERE OrderID=1025
Chamadas de procedimentos armazenados
O driver JDBC suporta as sintaxes de {? = call proc_name(?,...)} e de {call proc_name(?,...)} para chamadas de procedimentos armazenados, dependendo se precisa de processar um parâmetro de retorno.
Um procedimento é um objeto executável armazenado na base de dados. Geralmente, são uma ou mais instruções SQL que foram pré-compiladas. A sintaxe da sequência de escape para chamar um procedimento armazenado é a seguinte:
{[?=]call procedure-name[([parameter][,[parameter]]...)]}
onde procedure-name especifica o nome de um procedimento armazenado e parameter especifica um parâmetro de procedimento armazenado.
Para mais informações sobre a utilização da call sequência de escape com procedimentos armazenados, consulte Utilização de Instruções com Procedimentos Armazenados.
Junções exteriores
O driver JDBC suporta a sintaxe de junção esquerda, direita e externa completa do SQL92. A sequência de escape para uniões exteriores é a seguinte:
{oj outer-join}
onde a junção externa é:
table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition
onde table-reference é o nome de uma tabela e search-condition é a condição de junção que pretende usar para as tabelas.
Por exemplo:
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'
As seguintes sequências de escape de junção externa são suportadas pelo driver JDBC:
- Junções exteriores à esquerda
- Junções exteriores direitas
- Junções exteriores completas
- Junções externas aninhadas
Limitar sintaxe de escape
Observação
A sintaxe de escape LIMIT só é suportada pelo Microsoft JDBC Driver 4.2 (ou superior) para SQL Server quando se utiliza JDBC 4.1 ou superior.
A sintaxe de escape para o LIMIT é a seguinte:
LIMIT <rows> [OFFSET <row offset>]
A sintaxe de escape tem duas partes: <linhas> é obrigatória e especifica o número de linhas a devolver. OFFSET e <deslocamento de linha> são opcionais e especificam o número de linhas a saltar antes de começar a devolver as linhas. O driver JDBC suporta apenas a parte obrigatória ao transformar a consulta para usar TOP em vez de LIMIT. O SQL Server não suporta a cláusula LIMIT. O driver JDBC não suporta o deslocamento de linha< opcional> e lançará uma exceção se for utilizado.