Как избежать подстановки переменных в 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и удалите любой путь к файлу, который у вас есть в текстовом поле с надписью «Имя файла для сценария запуска соединения»!


-3

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


Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением - вы всегда можете комментировать свои собственные сообщения, и как только вы заработаете достаточную репутацию, вы сможете комментировать любое сообщение. Если у вас есть связанный, но другой вопрос, задайте новый вопрос со ссылкой на этот, если он поможет обеспечить контекст.
— Рохан Худе 08
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.