Выход из амперсанда в PL / SQL Developer - PullRequest
21 голосов
/ 18 августа 2011

Я пытаюсь выполнить простой оператор INSERT для базы данных Oracle. Одним из значений является поле VARCHAR2, а оператор вставки содержит амперсанд. Как мне это сделать? Я пробовал следующие методы:

  1. Escape \ as \ & с набором escape на
  2. отключить сканирование (это приводит к отсутствию или ошибке ORA-00922)
  3. установить определение выключено (это приводит к отсутствию или ошибке ORA-00922 опции)

Есть еще идеи?

Ответы [ 7 ]

24 голосов
/ 18 августа 2011

Как я решил, это избежать & с другим &.

Например:

INSERT INTO Foo (Bar) VALUES ('Up && Away');

Работает хорошо. Спасибо за помощь

21 голосов
/ 15 ноября 2015

В текущей версии PL / SQL Developer (11.0.x) есть кнопка для отключения / включения переменных замещения.

enter image description here

12 голосов
/ 18 августа 2011

Одной из особенностей PL / SQL Developer, с которой требуется время, чтобы ознакомиться, является множество различных типов окон.

Одним из них является окно COMMAND, которое по сути является эмулятором SQL * Plus.Мы можем запускать команды SQL * Plus, а также SQL, поэтому SET ESCAPE, SET DEFINE и даже SET SCAN OFF работают в этом окне.

8 голосов
/ 18 августа 2011

Вы пробовали что-то подобное?

INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy');

Улучшая мой первый ответ, ваша проблема связана с PL / SQL Developer.Если вы выполняете свой блок в окне Команды разработчика PL / SQL, вы также можете использовать стандартную команду SET DEFINE OFF, которая работает так же, как в SQL * Plus.

4 голосов
/ 03 октября 2012

Конкат работает отлично для меня ниже, вот что я сделал в своем предложении выбора:

select FUND_NM
FROM PERFORMANCE
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS')
3 голосов
/ 27 января 2015

Я использую chr(38), где мне нужен амперсанд в PL / SQL.

addr:= 'mysite.com/order.aspx?no=5678' || CHR(38) || 'id=947';
--above line gives you 'mysite.com/order.aspx?no=5678&id=947';
1 голос
/ 24 июля 2017

Это просто проблема редактора SQL.Чтобы решить эту проблему, просто скомпилируйте процедуру с помощью SET DEFINE OFF;,Выполнение, которое является PL (выполняется на сервере), не столкнется с этой проблемой.

...