何时或为何在 Oracle 数据库中使用 "SET DEFINE OFF"
When or Why to use a "SET DEFINE OFF" in Oracle Database
我正在观看 Oracle 中的脚本,我看到了一些我不认识的东西
REM INSERTING into database1."Users"
SET DEFINE OFF;
Insert into database1."Users" ("id","right") values ('1','R');
我正在寻找关于 "set define off" 的文档,它的字面意思是 "disable the parsing of commands to replace substitution variable with their values"
我不太明白他们想说什么。
谁能帮帮我?
示例如下:
SQL> set define off;
SQL> select * from dual where dummy='&var';
no rows selected
SQL> set define on
SQL> /
Enter value for var: X
old 1: select * from dual where dummy='&var'
new 1: select * from dual where dummy='X'
D
-
X
对于 set define off
,它使用 &var
值一行,提示用户为其输入一个值,并将 &var
替换为输入的值(在本例中,X
).
默认情况下,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
以恢复默认行为。
我正在观看 Oracle 中的脚本,我看到了一些我不认识的东西
REM INSERTING into database1."Users"
SET DEFINE OFF;
Insert into database1."Users" ("id","right") values ('1','R');
我正在寻找关于 "set define off" 的文档,它的字面意思是 "disable the parsing of commands to replace substitution variable with their values"
我不太明白他们想说什么。
谁能帮帮我?
示例如下:
SQL> set define off;
SQL> select * from dual where dummy='&var';
no rows selected
SQL> set define on
SQL> /
Enter value for var: X
old 1: select * from dual where dummy='&var'
new 1: select * from dual where dummy='X'
D
-
X
对于 set define off
,它使用 &var
值一行,提示用户为其输入一个值,并将 &var
替换为输入的值(在本例中,X
).
默认情况下,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
以恢复默认行为。