Oracle y los ámpersands en las consultas
Cuando intentamos ejecutar una consulta cualquiera en SQL Developer o SQL*Plus,
como por ejemplo un INSERT
, nos puede pasar que, si un valor de cadena
contiene un ámpersand (&), el programa en cuestión nos pida el valor de un
parámetro que nosotros no hemos especificado.
Esto se debe a que Oracle trata los ámpersands en cadenas de texto como marcadores de parámetros. Hay varias formas de evitar esto:
- Romper la cadena en el ámpersand, de esta forma:
SELECT 'Rock &' || ' Roll' FROM dual;
- Escapar los ámpersands anteponiéndoles una barra invertida y ejecutando la
sentencia
SET ESCAPE ON
:
- SET ESCAPE ON;
- SELECT 'Rock \& Roll' FROM dual;
- Ejecutar las sentencias
SET DEFINE OFF
ySET SCAN OFF
antes de las consultas:
- SET DEFINE OFF;
- SET SCAN OFF;
- SELECT 'Rock & Roll' FROM dual;