使用一个语句对多个属性和表进行Oracle SQL privelege授权

jsj*_*jsj 3 sql oracle sqlplus

是否可以在一个语句中为不同的表或属性授予不同的权限?

例如,我想要结合:

GRANT SELECT ON tbl TO user;
Run Code Online (Sandbox Code Playgroud)

GRANT UPDATE OF attr ON tbl TO user;
Run Code Online (Sandbox Code Playgroud)

此外,我可以结合授予不同关系的特权:

GRANT INSERT ON tbl2;
Run Code Online (Sandbox Code Playgroud)

所有在一个声明中.

Jon*_*ler 6

您可以将多个对象权限合并为一个GRANT,但仅限于同一个对象.例如:

GRANT SELECT, UPDATE(column1, column2), INSERT on TBL to user;
Run Code Online (Sandbox Code Playgroud)

但是,正如您在手册的语法图中所看到的,每个GRANT只能在一个对象上运行.

在此输入图像描述

但是,GRANT如果使用CREATE SCHEMA语法,则可以将多个s作为单个语句运行.

CREATE SCHEMA AUTHORIZATION owner_user
GRANT SELECT ON TBL TO user
GRANT SELECT ON TBL2 TO user;
Run Code Online (Sandbox Code Playgroud)

如果您希望简化代码,这将无济于事.但是,如果您有一些技术要求使用单个语句,它可能会起作用.例如,我经常发现组合DDL语句可以显着减少运行安装脚本所需的时间,尤其是在慢速网络上.