为什么匿名oracle存储过程正常工作但未命名

为什么匿名oracle存储过程正常工作但未命名,oracle,stored-procedures,Oracle,Stored Procedures,我试图在Oracle11.2.0.4.0中创建一个简单的SP,它将执行一个简单的update语句,如 update t set col1 = 1 where col2 = 2; 在匿名存储过程中执行此操作时,效果良好 begin update t set col1 = 1 where col2 = 2; end; 但如果我想建立一个程序 create or replace procedure p as begin update t set col1 = 1 where

我试图在Oracle11.2.0.4.0中创建一个简单的SP,它将执行一个简单的update语句,如

update t set col1 = 1 where col2 = 2;
在匿名存储过程中执行此操作时,效果良好

begin
     update t set col1 = 1 where col2 = 2;
end;
但如果我想建立一个程序

create or replace procedure p as 
begin
     update t set col1 = 1 where col2 = 2;
end;
尝试运行它时,我会遇到很多错误:

ORA-06550: line 9, column 13:
PLS-00201: identifier 'SYS.DBMS_SQL' must be declared
ORA-06550: line 9, column 13:
PL/SQL: Item ignored
ORA-06550: line 16, column 13:
PLS-00201: identifier 'SYS.DBMS_LOB' must be declared
ORA-06550: line 16, column 13:
PL/SQL: Item ignored

有人能解释它是如何发生的吗?sp为什么试图从SYS模式中获取对象?为什么它在匿名sp的情况下工作,而在命名sp的情况下不工作?

您使用什么代码来运行您的过程?我从SQL developerSupport运行它。他说,您如何从命令行字面上调用您的s.p.。顺便问一下,包(dbms_SQL和dbms_lob)是授予公共的吗?您是否运行
exec p
开始p;结束?您使用什么代码来运行您的过程?我从SQL Developersuppose运行它,他说您如何从命令行逐字地调用您的s.p.。顺便问一下,包(dbms_SQL和dbms_lob)是否被授予public?您是否运行
exec p
开始p;结束