我真的对术语数据库、用户和模式感到困惑。谁能解释一下它们之间的区别(如果是的话)?
如果它们相同,那么它们之间有什么相似之处?我们如何使用它们?我们如何创建它们?
我有一个面试问题,这是我面试时问的。我回答了这个问题,但面试官对我的回答并不那么信服。所以,有人请用我的理解纠正我吗?
问:为什么 Truncate 是 DDL 而 Delete 是 DML?两者都做几乎相同的工作(删除行)
答。当我们使用 Truncate 时,我们正在取消分配由数据分配的整个空间,而不保存到撤消表空间中。但是,在删除的情况下,我们将所有数据放入撤消表空间,然后删除所有数据。
请,如果有人知道上述最佳答案,请解释。
为什么不能直接在PL/SQL块里写ddl语句,比如我写的时候
CREATE OR REPLACE PROCEDURE test IS
BEGIN
truncate table table_name; // error
END test;
/
Run Code Online (Sandbox Code Playgroud)
但,
CREATE OR REPLACE PROCEDURE test IS
BEGIN
execute immediate 'truncate table table_name'; // works fine
END test;
/
Run Code Online (Sandbox Code Playgroud)
为什么第二个执行成功?