问题描述
大家好,
我只是想知道,如果我关闭的功能,即 “设置定义关闭” 从我的oracle数据库,会有任何后果/缺点与我的数据或数据库,因为我真的需要关闭它的一些查询。
请告知它是否不会破坏任何东西。
我只是想知道,如果我关闭的功能,即 “设置定义关闭” 从我的oracle数据库,会有任何后果/缺点与我的数据或数据库,因为我真的需要关闭它的一些查询。
请告知它是否不会破坏任何东西。
专家解答
Define是一个SQL * + 客户端变量。它不是数据库级别的设置。
将其设置为ON指示SQL * Plus在代码中查找替换变量。这些是以 & 号 (&) 为前缀的变量。
如果有,客户端将停止并要求您为变量提供一个值。此时它将更改您的代码以包含此文本。
如果你有 & 埋藏在某个地方的一些文本,问题就来了。例如说你正在插入:
汤姆和杰瑞
当SQL * Plus来处理这个问题时,它会问你用什么来替换变量Jerry。并插入:
所以除非你知道你的脚本包括这些变量,否则最好设置define off。这样可以避免对您的数据和代码进行意外更改!
将其设置为ON指示SQL * Plus在代码中查找替换变量。这些是以 & 号 (&) 为前缀的变量。
如果有,客户端将停止并要求您为变量提供一个值。此时它将更改您的代码以包含此文本。
如果你有 & 埋藏在某个地方的一些文本,问题就来了。例如说你正在插入:
汤姆和杰瑞
当SQL * Plus来处理这个问题时,它会问你用什么来替换变量Jerry。并插入:
SQL> create table t ( 2 c1 varchar2(20) 3 ); Table created. SQL> SQL> set define off SQL> insert into t values ( '汤姆和杰瑞' ); 1 row created. SQL> SQL> set define on SQL> insert into t values ( '汤姆和杰瑞' ); Enter value for jerry: mouse old 1: insert into t values ( '汤姆和杰瑞' ) new 1: insert into t values ( 'Tom mouse' ) 1 row created. SQL> select * from t; C1 -------------------- 汤姆和杰瑞 Tom mouse复制
所以除非你知道你的脚本包括这些变量,否则最好设置define off。这样可以避免对您的数据和代码进行意外更改!
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。