博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle存储过程跨用户执行查询报错
阅读量:6241 次
发布时间:2019-06-22

本文共 470 字,大约阅读时间需要 1 分钟。

在中,在USERA下编写一个存储过程,该存储过程中引用了另一个用户USERB下的表或视图对象。编译该存储过程,出现编译错误。报ORA-00942: table or view does not exist。

但是该表或视图的确在USERB下存在,而且已经授予了USERA DBA角色的权限,即可以查询任何用户下的表或视图。将存储过程中的该报错语句复制粘贴到SQL窗口中执行,不报错。为什么放在存储过程中会报上述错误呢?

经过研究,发现ORACLE对于在存储过程中引用其他用户下的表或视图对象有特别的限制,要求USERA对这个表或视图具有直接的SELECT权限,而不是通过角色,如DBA间接获取的权限。否则就会报上述错误导致编译不通过。

解决该问题的方法如下: 

1.登录到USERB用户下。 
2.GRANT SELECT ON 表名(或视图名) TO USERA 
3.重新登录到USERA用户下。 
4.重新编译存储过程,发现编译通过。问题解决。

转载于:https://www.cnblogs.com/Doson/p/6122703.html

你可能感兴趣的文章
小程序加载svg图片
查看>>
JavaScript面向对象编程-多态
查看>>
sequelize 管理查询——一对一关联查询
查看>>
PHP下kafka的常用脚本实践
查看>>
AJAX
查看>>
百度地图绘制点、图形
查看>>
PHP 文件系统完全指南
查看>>
PyQt5,RadioButton
查看>>
js设计模式(二)-工厂模式
查看>>
前端技术周刊 2018-08-13:Web Components
查看>>
kube-proxy源码解析
查看>>
REM,你这磨人的小妖精!
查看>>
聊聊HystrixConcurrencyStrategy
查看>>
PHP多进程系列笔记(一)
查看>>
深析Vue双向数据绑定(MVVM模型)
查看>>
【跃迁之路】【485天】程序员高效学习方法论探索系列(实验阶段242-2018.06.05)...
查看>>
react如果你想为一个组件返回多个元素怎么办?
查看>>
mybatis 为什么每次插入的时候总会创建一个SqlSession?
查看>>
Vue 教程第十六篇—— Vuex 之 action
查看>>
javaScript旋转Base64图片并得到新的base64数据
查看>>