Oracle:限制用户访问rowdata=user的行

Oracle:限制用户访问rowdata=user的行,oracle,user-permissions,Oracle,User Permissions,还有别的办法吗?我想将用户限制为他自己的模块和相关结果。第一个意图是创建一个视图,因为这样就可以将WHERE子句与用户结合使用,从而为我提供连接用户的用户名 CREATE OR REPLACE FORCE VIEW "ADMIN_STUDENT"."MODULE_LEADER" ("MCODE", "MLECTURER") AS SELECT "MCODE", "MLECTURER" FROM MODULE WHERE MLECTURER = USER; 或者,在视图定

还有别的办法吗?我想将用户限制为他自己的模块和相关结果。第一个意图是创建一个视图,因为这样就可以将WHERE子句与用户结合使用,从而为我提供连接用户的用户名

CREATE OR REPLACE FORCE VIEW "ADMIN_STUDENT"."MODULE_LEADER" ("MCODE", "MLECTURER") 
AS   
SELECT "MCODE",
"MLECTURER"     
FROM MODULE   
WHERE MLECTURER = USER;

或者,在视图定义中添加use
SYS\u上下文('USERENV','SESSION\u USER')

或者,添加use
SYS\u上下文('USERENV','SESSION\u USER'))
在视图定义中。

为什么该视图会提供您想要的输出?因为我可以将mlecuturer的行数据与当前连接的用户进行比较。用户应该只看到表中的“他的”数据。编辑:这些可以通过OEM作为用户管理的一部分实现吗?为什么该视图提供您想要的输出?因为我可以将MLECUTURER的行数据与当前连接的用户进行比较。用户应该只看到表中的“他的”数据。编辑:这些可以通过OEM作为用户管理的一部分实现吗?+1这是一个有效的替代方案,但我会尽可能避免VPD。当您向Oracle请求查询X时,它会秘密地将您的查询替换为Y+1,这是一个有效的替代方案,但我会尽可能避免VPD。当您向Oracle请求查询X时,它会秘密地用Y替换您的查询,这是非常令人沮丧的。