当我有一个像select * from table1
这样的sql语句时,它很好用,但是一旦将其放入函数中,我就会得到:
ORA-00942: table or view does not exist
如何解决呢?
请您参考如下方法:
您可以看几件事。根据您的问题,函数所有者似乎与表所有者不同。
1)通过角色授予:为了在另一个用户的对象上创建存储过程和函数,您需要直接访问对象(而不是通过角色进行访问)。
2)
By default, stored procedures and SQL methods execute with the privileges of their owner, not their current user.
如果在Schema A中创建了一个表,在Schema B中创建了该功能,则应查看Oracle的Invoker / Definer Rights概念,以了解可能引起此问题的原因。
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/subprograms.htm#LNPLS00809