如何避免在 OracleSQLDeveloper 中进行变量替换

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

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

如何避免使用 chr(38)u'trinidad \0026 tobago',因为它们都模糊了声明的目的?

211630 次浏览

在查询之前调用:

set define off;

另一种方式,粗俗:

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

来自 优化 SQL * Plus:

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

在 SQL * Plus 中,将 SET DEFINE ?放在脚本的顶部通常可以解决这个问题。也可能适用于 Oracle SQL 开发人员。

设定扫描关闭; 上面的命令也可以工作。

如果没有 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';

如果使用 liquibase 运行 sql 文件,则不会出现错误。但是对于 sql 开发人员,在 sql 代码之前使用这个 set define off;