如何以非管理员身份运行 dbms_output 的功能?

问题描述

我的计算机上有 XE,使用 Oracle Database 18c。早些时候,即使我以 sysadmin 或认角色登录,我也能够执行函数 dbms_output.put_line();。现在,当我以 sysadmin/sysdba 身份登录时,我只能运行 dbms_output.put_line()。作为用户,我收到以下消息:

PLS-00201: identifier ‘DBMS_OUPUT.PUT_LINE’ must be declared

我尝试添加权限以使用命令执行 dbms_output grant execute on DBMS_OUTPUT to username;,但是,当我执行包含 dbms_output.put_line() 的命令时收到此消息:

ORA-04067: not executed,package body "PERFSTAT.DBMS_OUTPUT" does not exist
ORA-06508: PL/sql: Could not find program unit being called: "PERFSTAT.DBMS_OUTPUT"

使用 sqlplus,我作为用户收到以下错误

PLS-00201: identifier 'DBMS_OUTPUT.ENABLE' must be declared

我该如何解决这个问题?

解决方法

那可能是因为你把它命名错了:

No : DBMS_OUPUT.PUT_LINE      (not "ouput" but "output")
Yes: DBMS_OUTPUT.PUT_LINE

截至第二条消息;好吧,这个:PERFSTAT.DBMS_OUTPUT 没有意义,PERFSTAT 不拥有那个包。它被称为

begin
  dbms_output.put_line('Hello');
end;
/

适用于任何用户,无需特殊资助。