Ответ 1
и является значением по умолчанию для DEFINE, которое позволяет использовать переменные замещения. Мне нравится отключать его, используя
SET DEFINE OFF
вам не придется беспокоиться о побеге или CHR (38).
При попытке выполнить операторы вставки SQL с помощью Oracle SQL Developer я продолжаю генерировать подсказку "Введите значение подстановки":
insert into agregadores_agregadores
(
idagregador,
nombre,
url
)
values
(
2,
'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss\&url='
);
Я пытался экранировать специальный символ в запросе, используя '\' выше, но я все еще не могу избежать амперсанда '& amp;', вызывающего подстановку строки.
и является значением по умолчанию для DEFINE, которое позволяет использовать переменные замещения. Мне нравится отключать его, используя
SET DEFINE OFF
вам не придется беспокоиться о побеге или CHR (38).
|| chr(38) ||
Это решение идеально.
Задайте для символа определения значение, отличное от &
SET DEFINE ~ create table blah (x varchar(20)); insert into blah (x) values ('blah&'); select * from blah; X -------------------- blah&
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL)
values (2,'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url=');
SELECT 'Free &' || ' Clear' FROM DUAL;
select 'one'||'&'||'two' from dual
Реальный ответ: вам нужно установить escape-символ в '\': SET ESCAPE ON
Возможно, проблема возникла либо из-за того, что экранирование было отключено, либо у escape-символа было установлено значение, отличное от '\'. Вышеприведенный оператор позволит экранировать и установить его в '\'.
Ни один из других ответов, опубликованных ранее, фактически не отвечает на исходный вопрос. Все они работают над проблемой, но не разрешают ее.