2016-09-28 88 views
3

在Oracle网站 Types of SQL Statements Grant和Revoke属于DDL,但在很多其他站点中,我看到Grant和Revoke在DCL中哪一个是正确的?DDL VS DCL差异

+2

这些是定义,根据其性质,它们不能是“正确的”或“不正确的”。相反,您需要说的是“使用Oracle文档中使用的DDL定义,GRANT语句是DDL语句。”在大多数情况下(但不是全部),除非您有充分的理由不这样做,否则您最好遵循Oracle的定义。 – mathguy

回答

1

最好把GRANTREVOKE当作DDL。

正如mathguy指出的那样,两个定义都不是真正的“正确”。但我建议你坚持使用Oracle的定义有两个原因:

  1. Oracle已经完全分类了几乎所有东西。来自V$SQLCOMMAND的每个可能的Oracle SQL命令都适合他们的系统。我发现的唯一例外是PL/SQL(一个匿名的PL/SQL块),Invalid(无效的命令)和Nothing(一个空字符串)。有人可能会争辩说这些并不是真正的SQL语句,尽管在某些情况下,对它们进行分类仍然很有用。我发现Oracle分类系统对创建一些PL/SQL语言工具很有帮助。
  2. 分类有时很重要。例如,在致电DBMS_UTILITY.EXEC_DDL_STATEMENT时,确切知道Oracle认为DDL是什么是很重要的。除了真正的DDL之外的任何东西都会默默地失败。