已创建数据库对象的所有权

当执行此 UDR 时,除非为建立的对象指定了其它所有者,否则创建所有者特权 UDR 的用户,而非执行此 UDR 的用户拥有此 UDR 创建的任何数据库对象。

例如,假设用户 mike 创建了该用户定义函数:
CREATE FUNCTION func1 () RETURNING INT;
        CREATE TABLE tab1 (colx INT);
        RETURN 1;
        END FUNCTION;

如果用户 joan 现在执行 func1 函数,用户 mike 而非用户 joan 是新建的表 tab1 的所有者。

然而,在 DBA 特权 UDR 的情况中,除非在此 UDR 中的数据库对象被指定给其它所有者,否则执行 UDR 的用户(而非 UDR 的所有者)拥有此 UDR 创建的任何数据库对象。

例如,假设用户 mike 创建了该用户定义函数::
CREATE DBA FUNCTION func2 () RETURNING INT;
        CREATE TABLE tab2 (coly INT);
        RETURN 1;
        END FUNCTION;

如果用户 joan 现在执行 func2 函数,用户 joan 而非用户 mike 是新建的表 tab2 的所有者。

另见 对用户身份和角色的支持 一节。