2016-09-28 84 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之外的任何東西都會默默地失敗。