如何避免在Oracle SQL Developer中使用“特立尼达和多巴哥”进行变量替换


111

当我尝试在Oracle SQL Developer 2.1中执行此语句时,会弹出一个对话框“输入替代变量”,要求TOBAGO的替换值,

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

我如何避免这种情况而又不求助于这些陈述chr(38)u'trinidad \0026 tobago'它们使陈述的目的蒙蔽?


1
奇怪的是,当我尝试完全像在SQL Developer 2.1中那样运行查询时,没有得到替换变量窗口?(而且我的定义肯定会启用)
wasatz 2010年

这个问题极大地帮助了我。
Oh Chin Boon 2012年

Answers:


191

在查询之前调用此:

set define off;

或者,hacky:

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

调整SQL * Plus

SET DEFINE OFF禁用命令解析,以将替换变量替换为其值。


9
(其他)做set define off;什么?
Xonatron'3

15

在SQL * Plus中SET DEFINE ?,通常将脚本放在顶部。可能也适用于Oracle SQL Developer。


2
设置定义?确实抑制了SQL Developer 2.1中的变量替换行为。如尼克所述,SET DEFINE OFF也可以。
Janek Bogucki 2010年

设置定义工作,但DBA有时不允许使用它,我不知道为什么
nikhil sugandh 18-10-12

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)
Janek Bogucki

@JanekBogucki立即将其正确使用而不使用CHAR(38)
nikhil sugandh 18-10-12

我给了您一个不同的答案,因为您已经有了绿色的打勾的答案,但您却
投票否决了

您无法想象您为我解决了什么痛苦,SQL Developer在运行脚本时不接受set define。这对我来说是解决方案
BrokenFrog

-3

我对此也有一些问题。每当我尝试建立与任何数据库的连接时,都会启动某种东西。

对我有用的是删除您可能已配置的所有启动脚本!

即,Tools>Preferences...>Database并删除在文本框中标记为“连接启动脚本的文件名”的文件路径!


-3

关闭扫描;上面的命令也可以。


这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方留下评论-您随时可以评论自己的帖子,一旦获得足够的声誉,您就可以在任何帖子中发表评论。如果您有一个相关但不同的问题,请提出一个新问题,请参考该问题是否有助于提供背景信息。
罗汉·胡德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.