ChatGPT解决这个技术问题 Extra ChatGPT

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

当我尝试在 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 中运行完全一样的查询时,我没有得到替换变量窗口? (而且我的定义肯定设置为开启)
这个问题对我帮助很大。

Á
Álvaro González

在查询之前调用它:

set define off;

或者,hacky:

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

Tuning SQL*Plus

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


set define off; 做什么(其他)?
d
diederikh

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


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

这将在没有 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。这是我的解决方案
C
Chamith

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


D
Dinesh Garud

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


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