无法在SQL plus中看到错误描述

时间:2018-08-02 04:56:13

标签: oracle stored-procedures sqlplus

我是oracle的新手,并使用SQL plus终端访问oracle DB。我尝试创建一个函数,并返回警告

  

function created with compilation error

执行show errors时它始终显示

错误:

  

ORA-00942: table or view does not exist

我的功能:

create or replace function axsaum.get_name
AS
v_name varchar2(20);
begin
v_name:='Helloooooo';
dbms_output.put_line(v_name);
END;
/

请提出建议。

1 个答案:

答案 0 :(得分:1)

您收到错误消息:ORA-00942: table or view does not exist。这意味着您的函数包含对数据库对象的引用,编译器无法将其关联到表或视图在函数范围内

您可能有几个原因。

  1. 您的函数引用了存在于架构中的表或视图,但是您拼写了错误的名称。
  2. 您的函数引用了一个表或视图,该表或视图存在于另一个架构中,并且您没有在引用之前加上所属的架构,也没有同义词。
  3. 您的函数引用了存在于其他模式中的表或视图,但模式所有者未授予您对该对象的权限。
  4. 您的函数引用了存在于不同架构中的表或视图,并且架构所有者已通过角色授予您对该对象的权限。 Oracle安全模型意味着我们无法使用通过角色授予我们帐户的特权来构建数据库对象(视图,存储过程等)。必须将特权明确授予我们的命名帐户。
  5. 该对象在您的架构或其他模式中不存在。

前两个原因是您可以自己解决的原因。其他人则需要架构所有者或具有管理员特权的超级用户(例如DBA)的干预。


现在您已经发布了函数,我们可以看到您正在引用Oracle内置软件包DBMS_OUTPUT。现在,该软件包应该已安装并作为默认安装的一部分被授予。但是,如果您执行的是非标准安装,或者不小心删除或撤消了某些内容,则需要让SYS用户运行应该修复它的dbmsotpt.sql脚本。软件包的文档中涵盖了详细信息。 Find out more