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

一个奇怪的查询现象,高手请进
select   *   from   EAB.S_KHXX;

在pl/sql   developer中单独查询可以用的.

但是我在存储过程中用到
insert   into   table1   (a)
select   a   from   t_org_dealer   ,   EAB.S_KHXX
where   .....

他却说我这个EAB.S_KHXX没有定义.

具体出错信息如下:
Error:   PL/SQL:   SQL   Statement   ignored
Line:   155
Text:   INSERT   INTO   T_CUST_CUSTOMER

Error:   PLS-00201:   必须说明标识符   'EAB.S_KHXX '
Line:   208
Text:   FROM   T_CUST_CUSTOMER,EAB.S_KHXX

------解决方案--------------------
把完整的SQL和表结构贴出来看看
------解决方案--------------------
没有给权限
------解决方案--------------------
SQLPlus等运行的 select 是根据你login的user的角色赋予权限的。
所以你得SQL是正确的。
但是到了PLsql中,角色赋予的权限就全部无效了。你必须对已用来执行PLSQL的那个User直接赋予访问EAB.S_KHXX的权限。
------解决方案--------------------
在存储过程里,必须单独grant权限,不能grant role,不会生效的