Вопрос:
Я пытаюсь сделать простой оператор INSERT для базы данных Oracle. Одним из значений является поле VARCHAR2, а инструкция insert содержит амперсанд. Как мне это сделать? Я пробовал следующие методы:
- Побег и как & с нажатием кнопки
- установить сканирование выключено (это приводит к ошибке или ошибке ошибки ORA-00922)
- set define off (это приводит к ошибке или ошибке ошибки ORA-00922)
Любые другие идеи?
Лучший ответ:
Как я решил, что он убегает и с другим &.
Например:
INSERT INTO Foo (Bar) VALUES (‘Up && Away’);
Хорошо работает. Спасибо за помощь
Ответ №1
Одна из особенностей PL/SQL Developer, для которой требуется время, чтобы ознакомиться с множеством различных типов окон.
Одним из них является окно COMMAND, которое в основном является эмулятором SQL * Plus. Мы можем запускать команды SQL * Plus, а также SQL, поэтому SET ESCAPE, SET DEFINE и действительно SET SCAN OFF работают в этом окне.
Ответ №2
В текущей версии PL/SQL Developer (11.0.x) есть кнопка для отключения/замены переменных замещения.
Ответ №3
Вы пробовали что-то вроде этого?
INSERT INTO tablex VALUES (‘Sid ‘ || ‘&’ || ‘ Nancy’);
Улучшая мой первый ответ, ваша проблема связана с PL/SQL Developer. Если вы выполните свой блок в окне командной строки PL/SQL Developer, вы также можете использовать стандартный SET DEFINE OFF, который работает так же, как и в SQL * Plus.
Ответ №4
concat работал отлично для меня ниже, это то, что я сделал в своем выборе:
select FUND_NM FROM PERFORMANCE WHERE upper(FUND_DESC) in (‘My L&’ ||’L FUNDS’) Ответ №5
Я использую 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’; Ответ №6
Это просто проблема с редактором SQL. Чтобы решить эту проблему, просто скомпилируйте процедуру с SET DEFINE OFF;,
Выполнение, которое является PL (выполняется на сервере), не столкнется с этой проблемой.