当前位置:  开发笔记 > 数据库 > 正文

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

如何解决《何时或为何在Oracle数据库中使用"SETDEFINEOFF"》经验,为你挑选了2个好方法。

我正在看Oracle中的脚本,我看到了一些我不认识的东西

REM INSERTING into database1."Users"
 SET DEFINE OFF;
Insert into database1."Users" ("id","right") values ('1','R');

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

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

谁能帮我?



1> Tony Andrews..:

默认情况下,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在脚本末尾添加以恢复默认行为.



2> Durga Viswan..:

这是一个例子:

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).

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有