Sql 取消扫描目的

Sql 取消扫描目的,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,请任何人解释一下设置扫描关闭和设置扫描打开的目的是什么?我知道它的目的是禁用替换变量和参数,但我需要一个明确的解释。SET SCAN已过时,但它用于控制是否应扫描替换参数/变量关闭将阻止扫描参数/变量 SET DEFINE替换/扩展了功能,这里有一个很好的说明: 从网站 设置定义 从dual中选择“&hello” 如果define设置为on,SQL*Plus将查找当前替换 前缀,它要求输入字符串。在下面的示例中, 我进去了:哈桑 输入hello的值:已输入此字符串 这相当于旧的设置扫描的工作方式

请任何人解释一下设置扫描关闭和设置扫描打开的目的是什么?我知道它的目的是禁用替换变量和参数,但我需要一个明确的解释。

SET SCAN
已过时,但它用于控制是否应扫描替换参数/变量<代码>关闭将阻止扫描参数/变量

SET DEFINE
替换/扩展了功能,这里有一个很好的说明:

从网站

设置定义

从dual中选择“&hello”

如果define设置为on,SQL*Plus将查找当前替换 前缀,它要求输入字符串。在下面的示例中, 我进去了:哈桑

输入hello的值:已输入此字符串

这相当于旧的
设置扫描的工作方式。基本上,您可以控制是否在SQL*Plus(以及支持SQL*Plus语法的各种其他工具)中提示替换,默认情况下,该工具扫描SQL语句以查找替换变量。这允许您创建SQL*Plus脚本,这些脚本使用SQL*Plus中定义的变量执行各种报告任务

因为替换变量以符号(“&”)开头,不需要预先声明,所以,如果您试图运行恰好包含符号的SQL语句,则会产生问题。例如,如果有一个
INSERT
语句恰好有一个包含符号的字符串文本,则不希望SQL*Plus预处理该语句。或者,如果我想选择字符串“foo&bar”

但是,如果我允许SQL*Plus预处理该语句,则文本“&bar”将被解释为替换变量,并提示我在运行时输入要替换的文本

SQL> set scan on
SQL> /
Enter value for bar: some value
old   1: select 'foo & bar' from dual
new   1: select 'foo some value' from dual

'FOOSOMEVALUE'
--------------
foo some value

SQL>设置SQL上的扫描>/输入条形图的值:某些值旧1:从双精度中选择“foo&bar”新1:从双精度中选择“foo某些值”


“FOOSOMEVALUE”-------foo some value

是否默认将DEFINE设置为ON?
SQL> set scan off;
SQL> ed
Wrote file afiedt.buf

  1* select 'foo & bar' from dual
SQL> /

'FOO&BAR'
---------
foo & bar
SQL> set scan on
SQL> /
Enter value for bar: some value
old   1: select 'foo & bar' from dual
new   1: select 'foo some value' from dual

'FOOSOMEVALUE'
--------------
foo some value