如何避免 Oracle SQL Developer 中的变量替换

Posted

技术标签:

【中文标题】如何避免 Oracle SQL Developer 中的变量替换【英文标题】:How to avoid variable substitution in Oracle SQL Developer 【发布时间】:2011-01-20 23:56:17 【问题描述】:

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

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

如果不使用chr(38)u'trinidad \0026 tobago' 这两者都掩盖了声明的目的,我怎样才能避免这种情况?

【问题讨论】:

这很奇怪,当我尝试在 SQL developer 2.1 中运行完全一样的查询时,我没有得到替换变量窗口? (而且我的定义肯定设置为开启) 这个问题对我帮助很大。 【参考方案1】:

在查询之前调用它:

set define off;

或者,hacky:

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

来自Tuning SQL*Plus:

SET DEFINE OFF 禁用解析要替换的命令 替换变量及其值。

【讨论】:

set define off; 做什么(其他)?【参考方案2】:

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

【讨论】:

设置定义?确实抑制了 SQL Developer 2.1 中的变量替换行为。正如 Nick 所指出的, SET DEFINE OFF 也有效。 设置定义有效,但DBA不允许使用它有时我不知道为什么【参考方案3】:

这将按照您的要求在没有 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) 的情况下正确理解 我给了你一个不同的答案,因为你已经有绿色勾选的答案,但你投了反对票 伙计,你无法想象你为我解决了多么痛苦,当你运行脚本时,sql developer 不接受 set define off。这是我的解决方案【参考方案4】:

如果你使用liquibase 运行sql 文件,它不会报错。但是对于 sql 开发人员来说,在你的 sql sode 之前使用这个set define off;

【讨论】:

【参考方案5】:

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

【讨论】:

这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时对自己的帖子发表评论,一旦您获得足够的声誉,您就可以对任何帖子发表评论。如果您有一个相关但不同的问题,请提出一个引用该问题的新问题,如果它有助于提供上下文。

以上是关于如何避免 Oracle SQL Developer 中的变量替换的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql developer工具 如何给用户分配权限

Oracle SQL Developer 4 表数据选项卡初始过滤器

如何安装pl/sql developer

如何安装pl/sql developer

Oracle Sql Developer如何在Oracle中创建和设置角色?

oracle 客户端 sql developer 如何修改jdk版本