日期:2014-05-17  浏览次数:20914 次

oracle存储过程中用户权限
select max (week_id) from mocha.open_order_fact_week;
单独执行这句,可以执行成功。
但在存储过程中运行
select max (week_id) week_id into v_last_partation from mocha.open_order_fact_week;

mocha是用户
却报错:
错误信息:

PLS-00201: identifier 'MOCHA.OPEN_ORDER_FACT_WEEK' must be declared

请各位帮我解决。

------解决方案--------------------
首先说解决办法,再说为什么。
解决办法:
以用户:mocha 或者SYS 登录对创建该存储过程的用户授权:
只授予查询权限:
GRANT SELECT ON mocha.open_order_fact_week TO <创建过程的用户>;
授予所有权限:
GRANT ALL ON mocha.open_order_fact_week TO <创建过程的用户>;
执行完成后,将过程重新编译,应该就没有问题了,这也是我们很多同事已经经常遇到的一个事情。



这就是权限问题,其实虽然你在那边使用SELECT语句可以查询,但是并不代表有权限,在权限运行上,ORACLE对于用户查询常用的SQL,是可以直接通过用户名直接得到的,但是在程序中运行,必须要有相应的权限控制,好比是你可以看看数据是什么样的,但要通过程序和我建立关系,我要授权给你才行。