何时或为何在Oracle数据库中使用“SET DEFINE OFF”

时间:2015-12-17 10:46:31

标签: oracle sqlplus

我正在观看Oracle中的脚本,我看到了一些我不认识的内容

{{1}}

我正在寻找关于“set define off”的文档,它实际上写着“禁用解释命令以用它们的值替换替换变量”

我真的不明白他们想说什么。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:82)

默认情况下,SQL Plus会对待'&'作为开始替换字符串的特殊字符。运行恰好包含'&'的脚本时,这可能会导致问题出于其他原因:

SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');
Enter value for spencers: 
old   1: insert into customers (customer_name) values ('Marks & Spencers Ltd')
new   1: insert into customers (customer_name) values ('Marks  Ltd')

1 row created.

SQL> select customer_name from customers;

CUSTOMER_NAME
------------------------------
Marks  Ltd

如果您知道您的脚本包含(或可能包含)包含'&'的数据字符,你不希望上面的替换行为,然后使用set define off关闭运行脚本时的行为:

SQL> set define off
SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');

1 row created.

SQL> select customer_name from customers;

CUSTOMER_NAME
------------------------------
Marks & Spencers Ltd

您可能希望在脚本末尾添加set define on以恢复默认行为。