Я пытаюсь сделать простой оператор INSERT для базы данных Oracle. Одним из значений является поле VARCHAR2, а инструкция insert содержит амперсанд. Как мне это сделать? Я пробовал следующие методы:
- Побег и как \& с нажатием кнопки
- установить сканирование выключено (это приводит к ошибке или ошибке ошибки ORA-00922)
- set define off (это приводит к ошибке или ошибке ошибки ORA-00922)
Любые другие идеи?
Как я решил, что он убегает и с другим &.
Например:
INSERT INTO Foo (Bar) VALUES ('Up && Away');
Хорошо работает. Спасибо за помощь
Одна из особенностей PL/SQL Developer, для которой требуется время, чтобы ознакомиться с множеством различных типов окон.
Одним из них является окно COMMAND, которое в основном является эмулятором SQL * Plus. Мы можем запускать команды SQL * Plus, а также SQL, поэтому SET ESCAPE
, SET DEFINE
и действительно SET SCAN OFF
работают в этом окне.
Вы пробовали что-то вроде этого?
INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy');
Улучшая мой первый ответ, ваша проблема связана с PL/SQL Developer. Если вы выполните свой блок в окне командной строки PL/SQL Developer, вы также можете использовать стандартный SET DEFINE OFF, который работает так же, как и в SQL * Plus.
concat работал отлично для меня ниже, это то, что я сделал в своем выборе:
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 (выполняется на сервере), не столкнется с этой проблемой.