El Controlador Microsoft JDBC para SQL Server admite el uso de secuencias de escape SQL, según se define en la API de 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...}
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 '\\'}");
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 un flujo 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 |
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