PL/SQL中使用AUTHID CURRENT_USER的存储过程,调用者无对应表时的执行问题
问题解答
当用户1创建带有AUTHID CURRENT_USER的PL/SQL存储过程时,这个存储过程会以**调用者的身份(即用户2)**执行,具体逻辑如下:
- 存储过程执行时,对象解析(比如查找表
t1)会基于调用者(用户2)的schema。 - 如果用户2的schema中不存在表
t1,执行存储过程时会直接触发ORA-00942: 表或视图不存在的错误,不会去访问用户1的t1表。
简单来说,AUTHID CURRENT_USER指定的是调用者权限模式,存储过程的执行上下文完全属于调用用户,不会默认使用定义者(用户1)的对象。
内容的提问来源于stack exchange,提问作者Aswin8109
相关产品推荐
相关产品推荐

