CREATE DBA PROCEDURE all_objects() CREATE TABLE learn1 (intone SERIAL, inttwo INT NOT NULL, charcol CHAR(10) ); CREATE INDEX learn_ix ON learn1 (inttwo); CREATE TABLE toys (name CHAR(15) NOT NULL UNIQUE, description CHAR(30), on_hand INT); END PROCEDURE;
要使用 all_objects 过程来控制将列添加至表的操作,请取消所有用户对数据库的 Resource 特权。当用户尝试在此过程外部通过 SQL 语句来创建表、索引或视图时,他们无法完成该操作。当用户执行该过程时,他们具有临时的 DBA 特权,因此,举例来说,CREATE TABLE 语句会成功,并且可以保证对添加的每个列都加以约束。另外,用户创建的对象由那些用户拥有。对于 all_objects 过程,任何执行该过程的人都拥有两个表和索引。