Как избежать подстановки переменных в Oracle SQL Developer с помощью 'trinidad & tobago'

111

Когда я пытаюсь выполнить этот оператор в Oracle SQL Developer 2.1, появляется диалоговое окно «Enter Substitution Variable» с просьбой ввести значение замены для TOBAGO ,

update t set country = 'Trinidad and Tobago' where country = 'trinidad & tobago';

Как я могу избежать этого, не прибегая к тому chr(38)или иному, u'trinidad \0026 tobago'что скрывает цель утверждения?

Янек Богуцкий
источник
1
Странно, когда я попытался выполнить такой же запрос в SQL Developer 2.1, я не получил окно замены переменной? (И мои определения, безусловно,
включены
Этот вопрос мне очень помог.
Oh Chin Boon

Ответы:

192

Назовите это перед запросом:

set define off;

Как вариант, взломать:

update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';

Из Tuning SQL * Plus :

SET DEFINE OFF отключает синтаксический анализ команд для замены переменных подстановки их значениями.

Ник Крейвер
источник
9
Что (еще) делает set define off;?
Xonatron
15

В SQL * Plus SET DEFINE ?это обычно решает размещение в начале скрипта. Может работать и для Oracle SQL Developer.

диедерих
источник
2
УСТАНОВИТЬ ОПРЕДЕЛЕНИЕ? подавляет поведение подстановки переменных в SQL Developer 2.1. Как отметил Ник, SET DEFINE OFF также работает.
Janek Bogucki
set define работает, но администратор баз данных не позволяет использовать его иногда, я не знаю почему
nikhil sugandh
1

это будет работать, как вы просили, без CHAR (38):

update t set country = 'Trinidad and Tobago' where country = 'trinidad & '|| 'tobago';

create table table99(col1 varchar(40));
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
SELECT * FROM table99;

update table99 set col1 = 'Trinidad and Tobago' where col1 = 'Trinidad &'||'  Tobago';
нихил сугандх
источник
Мой вопрос заключался в том, как это можно сделать без использования chr(38).
Янек Богуцкий
@JanekBogucki, возьми это правильно сейчас, без использования CHAR (38)
nikhil sugandh
Я дал вам другой ответ, так как у вас уже есть ответ с зеленой галочкой, но вы проголосовали против
nikhil sugandh
Приятель, ты не представляешь, какую агонию ты решил для меня, разработчик sql не принимает set define off при запуске скрипта. Это решение для меня
BrokenFrog
-3

У меня тоже была проблема с этим. Что-то запускалось каждый раз, когда я пытался установить соединение с любой БД ..

У меня сработало удаление любого сценария запуска, который вы могли настроить!

т.е. Tools>Preferences...>Databaseи удалите любой путь к файлу, который у вас есть в текстовом поле с надписью «Имя файла для сценария запуска соединения»!

ufo2mstar
источник
-3

отключить сканирование; Вышеупомянутая команда также работает.

Динеш Гаруд
источник
Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением - вы всегда можете комментировать свои собственные сообщения, и как только вы заработаете достаточную репутацию, вы сможете комментировать любое сообщение. Если у вас есть связанный, но другой вопрос, задайте новый вопрос со ссылкой на этот, если он поможет обеспечить контекст.
Рохан Худе 08