淘先锋技术网

首页 1 2 3 4 5 6 7

我知道这是一个老生常谈,但我只是偶然发现,我觉得这一点还没有得到完全解释。

在SQL*Plus中,/和一个;因为他们的工作方式不同。

这个;结束SQL语句,而/执行当前“缓冲区”中的任何内容。所以当你使用; 和 a /该语句实际上执行了两次。

您可以很容易地看到,使用/运行语句之后:SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:37:20 2012Copyright (c) 1982, 2010, Oracle.

All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning and OLAP options

SQL> drop table foo;Table dropped.SQL> /drop table foo           *ERROR at line 1:ORA-00942: table or view does not exist

在这种情况下,人们实际上注意到了错误。

但是,假设有这样的SQL脚本:drop table foo;/

这是从SQL*Plus内部运行的,这将非常令人困惑:SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:38:05 2012Copyright (c) 1982, 2010, Oracle.

All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning and OLAP options

SQL> @dropTable dropped.drop table foo           *ERROR at line 1:ORA-00942: table or view does not exist

这个/主要是为了运行嵌入了;就像CREATE PROCEDURE声明。