Usar secuencias de escape SQL

El controlador JDBC de Microsoft SQL Server 2005 permite el uso de secuencias de escape SQL, según se define en la API JDBC. Las secuencias de escape se usan dentro de una instrucción SQL para indicar al controlador que la parte de la secuencia de escape de la cadena SQL se debería tratar de forma diferente. Cuando el controlador JDBC procesa la parte de la secuencia de escape de una cadena SQL, traduce esa parte de la cadena en código SQL que SQL Server entiende.

Hay cinco tipos de secuencias de escape que la API JDBC requiere, y el controlador JDBC las admite todas:

  • Literales comodín LIKE

  • Tratamiento de funciones

  • Literales de fecha y hora

  • Llamadas a procedimientos almacenados

  • Combinaciones externas

La sintaxis de las secuencias de escape que usa el controlador JDBC es la siguiente:

{keyword ...parameters...}

Nota

El proceso de escape SQL siempre está activado para el controlador JDBC.

En las secciones siguientes se describen los cinco tipos de secuencias de escape y cómo las admite el controlador JDBC.

Literales comodín LIKE

El controlador admite la sintaxis de {escape 'escape character'} para usar comodines de cláusulas LIKE como literales. Por ejemplo, el código siguiente devolverá valores para col3, donde el valor de col2 comienza literalmente con un guión (y no con su uso como comodín).

ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2 
LIKE '\\_%' {escape '\\'}");

Nota

La secuencia de escape debe estar al final de la instrucción SQL. Para que haya varias instrucciones SQL en una cadena de comandos, la secuencia de escape tiene que estar al final de cada instrucción SQL pertinente.

Tratamiento de funciones

El controlador JDBC admite las secuencias de escape de funciones en instrucciones SQL con la sintaxis siguiente:

{fn functionName}

donde functionName es una función que admite el controlador JDBC. Por ejemplo:

SELECT {fn UCASE(Name)} FROM Employee

En la tabla siguiente se muestran las diversas funciones que el controlador JDBC admite al usar una secuencia de escape de funciones.

Funciones de cadena Funciones numéricas Funciones de fecha y hora Funciones del sistema

ASCII

CHAR

CONCAT

DIFFERENCE

INSERT

LCASE

LEFT

LENGTH

LOCATE

LTRIM

REPEAT

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

TRUNCATE

CURDATE

CURTIME

DAYNAME

DAYOFMONTH

DAYOFWEEK

DAYOFYEAR

EXTRACT

HOUR

MINUTE

MONTH

MONTHNAME

NOW

QUARTER

SECOND

TIMESTAMPADD

TIMESTAMPDIFF

WEEK

YEAR

DATABASE

IFNULL

USER

Nota

Si intenta utilizar una función que la base de datos no admita, se producirá un error.

Literales de fecha y hora

La sintaxis de las secuencias de escape para los literales de fecha, hora y marca de tiempo es la siguiente:

{literal-type 'value'}

donde literal-type es uno de los siguientes:

Tipo de literal Descripción Formato del valor

d

Fecha

aaaa-mm-dd

t

Hora

hh:mm:ss [1]

ts

TimeStamp

aaaa-mm-dd hh:mm:ss[.f...]

Por ejemplo:

UPDATE Orders SET OpenDate={d '2005-01-31'} 
WHERE OrderID=1025

Llamadas a procedimientos almacenados

El controlador JDBC es compatible con la sintaxis de escape {? = call proc_name(?,...)} y {call proc_name(?,...)} para las llamadas a procedimientos almacenados, según si tiene que procesar un parámetro de devolución.

Un procedimiento almacenado es un objeto ejecutable almacenado en la base de datos. Normalmente, se trata de una o varias instrucciones SQL compiladas. La sintaxis de las secuencias de escape para llamar a un procedimiento almacenado es la siguiente:

{[?=]call procedure-name[([parameter][,[parameter]]...)]}

donde procedure-name y parameter especifican el nombre y un parámetro de un procedimiento almacenado, respectivamente.

Para obtener más información acerca de cómo usar la secuencia de escape call con los procedimientos almacenados, vea Usar instrucciones con procedimientos almacenados.

Combinaciones externas

El controlador JDBC admite la sintaxis de combinación externa completa, derecha e izquierda de SQL92. La secuencia de escape para las combinaciones externas es:

{oj outer-join}

donde outer-join es:

table-reference {LEFT | RIGHT | FULL} OUTER JOIN  
{table-reference | outer-join} ON search-condition

donde table-reference es un nombre de tabla y search-condition es la condición de combinación que desea usar para las tablas.

Por ejemplo:

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'

El controlador JDBC admite las siguientes secuencias de escape de combinaciones externas:

  • Combinaciones externas izquierdas

  • Combinaciones externas derechas

  • Combinaciones externas completas

  • Combinaciones externas anidadas

Vea también

Otros recursos

Usar instrucciones con el controlador JDBC