2016-09-28 3 views
3

В Oracle сайт Types of SQL Statements Grant and Revoke принадлежит DDL, но во многих других сайтах я вижу грант и отмену в DCL ... какой из них правильный?DDL VS DCL разница

+2

Это определения, и по своей природе они не могут быть «правильными» или «неправильными». Скорее всего, вам нужно сказать, что «используя определение DDL, используемое в документации Oracle, заявления GRANT являются операторами DDL». В большинстве (но не во всех) случаях вам лучше следовать определению Oracle, если у вас нет веских оснований для этого. – mathguy

ответ

1

Лучше всего обрабатывать GRANT и REVOKE как DDL.

Как указано в Mathguy, ни одно определение не является действительно «правильным». Но я рекомендую вам придерживаться определения Oracle по двум причинам:

  1. Оракул тщательно классифицировал почти все. Каждая возможная команда Oracle SQL от V$SQLCOMMAND будет вписываться в их систему. Единственными исключениями, которые я нашел, являются PL/SQL (анонимный блок PL/SQL), Invalid (команда, которая не имеет смысла) и Nothing (пустая строка). Можно утверждать, что на самом деле это не SQL-выражения, хотя в некоторых контекстах все же полезно их классифицировать. Я нашел систему классификации Oracle полезной для создания некоторых инструментов языка PL/SQL.
  2. Классификация иногда имеет значение. Например, важно точно знать, что Oracle считает DDL при вызове DBMS_UTILITY.EXEC_DDL_STATEMENT. Все, кроме истинного DDL, будет терпеть неудачу.