Escape амперсанд в PL / SQL Developer
Я пытаюсь простой оператор INSERT против базы данных Oracle. Одним из значений является поле VARCHAR2, а инструкция insert содержит амперсанд. Как мне это сделать? Я пробовал следующие методы:
- Escape & as & с набором escape on
- set scan off (это вызывает ошибку Ora-00922 отсутствует или недопустимый параметр)
- set define off (это вызывает ошибку Ora-00922 отсутствует или недопустимый параметр)
любой другой идеи?
7 ответов
Как я решил, что он избегает & с другим &.
например:
INSERT INTO Foo (Bar) VALUES ('Up && Away');
работает хорошо. Спасибо за помощь
текущая версия PL / SQL Developer (11.0.x) имеет кнопку для отключения/включения переменных подстановки.
одной из особенностей 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 (выполнение на сервере), не столкнется с этой проблемой.