2

我最近开始学习 Oracle SQL,对是否需要终止分号(或者,实际上,它是否是您正在使用的特定数据库程序的功能)有点困惑。

在工作中,我必须使用 DBVisualizer,并且总是有一个终止分号,但在“Oracle SQL 示例”一书中,它始终缺乏。有人可以启发我吗?谢谢。

4

2 回答 2

2

是来自 dba.stackexchange 的类似问题。接受的答案指出本地实例的命令在返回时执行,而对服务器的多行命令在分号上执行。

于 2012-11-10T16:30:31.423 回答
1

四十多年来,分号是终止符还是分隔符的问题一直是计算机语言中的一个混乱问题。比较 Pascal 和 Java。

如果您接受分号作为 SQL 中的分隔符,那么在交互式 sql 中可能不需要它,就像在 Oracle 的 SQL/plus 解释器中一样。但是 SQL 解析器确实有它的工作要做。SQL 显然不是为了方便编写解析器而设计的。

考虑一下:

select 
    College_Name,
    City
from 
    Colleges

解析器如何知道命令不会继续执行以下操作?

where
     State = 'CA'

如果还可以输入由某种开始-结束对括起来的命令序列,那么解析器的工作就会变得更加困难。分号极大地帮助了解析器。

在交互式 SQL 的某些方言中,按两次 Enter 键可以触发执行。在其他情况下,为此目的使用了一个特殊的命令,如“go”。

于 2012-11-10T16:46:37.693 回答