对与例程相关联的对象的权限

数据库服务器检查是否存在任何被引用的对象,并验证调用该例程的用户是否拥有访问被引用的对象的必要权限。

由例程引用的对象可包括:
当例程运行时,定义有效的权限为下列的联合: 在缺省情况下,数据库管理员拥有数据库中带有 GRANT 选项的所有权限。因此,执行由数据库管理员拥有的例程的用户可从给定的数据库中所有表进行选择。

GRANT EXECUTE ON 语句提供给被授予者任何表级别权限,授予者从包含 WITH GRANT 关键字的 GRANT 语句收到这些权限。

该例程的所有者,不是运行该例程的用户,拥有在执行该例程过程中创建的未限定的对象。例如,假设用户 howie 注册创建两个表的 SPL 例程,使用下列 SPL 例程:
CREATE PROCEDURE promo()
        . . .
        CREATE TABLE newcatalog 
        (
        catlog_num INTEGER
        cat_advert VARCHAR(255, 65)
        cat_picture BLOB
        ) ;
        CREATE TABLE dawn.mailers
        (
        cust_num INTEGER
        interested_in SET(catlog_num INTEGER)
        );
        END PROCEDURE;

用户 julia 运行该例程,创建表 newcatalog。由于没有所有者名称来限定表名称 newcatalog,因此,例程所有者(howie)拥有 newcatalog。相比之下,限定的名称 dawn.maillist 标识 dawn 作为 maillist 的所有者。