Escape амперсанд в PL / SQL Developer

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

  1. Escape & as & с набором escape on
  2. set scan off (это вызывает ошибку Ora-00922 отсутствует или недопустимый параметр)
  3. set define off (это вызывает ошибку Ora-00922 отсутствует или недопустимый параметр)

любой другой идеи?

7 ответов


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

например:

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

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


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

enter image description here


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

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


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

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

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


конкат работал отлично для меня ниже, что я сделал в своем заявлении select:

select FUND_NM
FROM PERFORMANCE
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS')

Я использую 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';

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