暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle集定义关闭查询的快速问题

ASKTOM 2018-12-12
226

问题描述

大家好,

我只是想知道,如果我关闭的功能,即 “设置定义关闭” 从我的oracle数据库,会有任何后果/缺点与我的数据或数据库,因为我真的需要关闭它的一些查询。

请告知它是否不会破坏任何东西。

专家解答

Define是一个SQL * + 客户端变量。它不是数据库级别的设置。

将其设置为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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论