Partilhar via


Usando sequências de escape SQL

Baixar driver JDBC

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.

Consulte também

Utilização de instruções com o driver JDBC