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

发布于 2024-08-22 17:58:48 字数 315 浏览 9 评论 0原文

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

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

如何避免这种情况而不发生这种情况?求助于 chr(38)u'trinidad \0026 tobago' 这两者都掩盖了该语句的目的?

When I try to execute this statement in Oracle SQL Developer 2.1 a dialog box "Enter Substitution Variable" pops up asking for a replacement value for TOBAGO,

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

How can I avoid this without resorting to chr(38) or u'trinidad \0026 tobago' which both obscure the purpose of the statement?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

我ぃ本無心為│何有愛 2024-08-29 17:58:48

在查询之前调用它:

set define off;

或者,hacky:

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

来自 调整 SQL*Plus

SET DEFINE OFF 禁止解析要替换的命令
用它们的值替换变量。

Call this before the query:

set define off;

Alternatively, hacky:

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

From Tuning SQL*Plus:

SET DEFINE OFF disables the parsing of commands to replace
substitution variables with their values.

小耗子 2024-08-29 17:58:48

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

In SQL*Plus putting SET DEFINE ? at the top of the script will normally solve this. Might work for Oracle SQL Developer as well.

小兔几 2024-08-29 17:58:48

这将按照您的要求工作,无需 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';

this will work as you asked without 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';
娇妻 2024-08-29 17:58:48

如果使用liquibase运行sql文件,不会报错。但对于 sql 开发人员来说,请在 sql sode 之前使用此 set Define off;

If you use liquibase to run sql file, it will not give error. But for sql developer use this set define off; before ur sql sode

吃不饱 2024-08-29 17:58:48

设置扫描关闭;
上面的命令也有效。

set scan off;
Above command also works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文