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请各位帮我解决。
单独执行这句,可以执行成功。
但在存储过程中运行
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请各位帮我解决。
authid current_user IS
v_last_partation varchar(25);
beginselect max (week_id) week_id into v_last_partation from mocha.open_order_fact_week;dbms_output.put_line(v_last_partation);end rsn2540w_open_orders ;
/*这贴的5楼4不4正解*/
grant select on open_order_fact_week to 存储过程所在的用户;
解决办法:
以用户:mocha 或者SYS 登录对创建该存储过程的用户授权:
只授予查询权限:
GRANT SELECT ON mocha.open_order_fact_week TO <创建过程的用户>;
授予所有权限:
GRANT ALL ON mocha.open_order_fact_week TO <创建过程的用户>;
执行完成后,将过程重新编译,应该就没有问题了,这也是我们很多同事已经经常遇到的一个事情。这就是权限问题,其实虽然你在那边使用SELECT语句可以查询,但是并不代表有权限,在权限运行上,ORACLE对于用户查询常用的SQL,是可以直接通过用户名直接得到的,但是在程序中运行,必须要有相应的权限控制,好比是你可以看看数据是什么样的,但要通过程序和我建立关系,我要授权给你才行。