Oracle 10g提供的软件包不可用

时间:2011-04-20 17:08:08

标签: plsql oracle10g

我是学习PL / SQL的学生。我有一个10g的本地安装我正在运行我的查询。每当我尝试使用DBMS_ALERT,DBMS_PIPE或其他默认包时,我都会收到“无效的SQL”消息。我在TOAD和SQL + Plus中尝试了相同结果的查询。这会让我相信这些软件包没有安装,或者无法访问我的用户会话。我正在使用'SYS'用户登录,所以我不认为权限会成为问题。

有人可以教我如何制作这些包装吗?我的印象是他们是默认提供的?

非常感谢,

凯尔

2 个答案:

答案 0 :(得分:3)

您可能做错的一件事是尝试在PL / SQL块之外调用PL / SQL函数或过程。您可能需要将调用包装到beginend中的过程中,例如:

SQL> dbms_lock.sleep(1);
SP2-0734: unknown command beginning "dbms_lock...." - rest of line ignored.
SQL> begin dbms_lock.sleep(1); end;
  2  /

PL/SQL procedure successfully completed.

(一行上的单个/告诉SQL * Plus这是输入的结尾。通常,SQL * Plus使用分号来标记语句的结尾。但是,PL / SQL可以包含分号,如果SQL * Plus识别出您正在输入PL / SQL,它会在将其输入传递给数据库之前自行等待单个/。)

您遇到错误的另一个可能原因是您尝试在查询中调用存储过程。这是不可能的,因为存储过程不返回任何结果。不可否认,如果您尝试在查询中调用过程,则会收到的错误不是特别有用:

SQL> select dbms_alert.register('test') from dual;
select dbms_alert.register('test') from dual
       *
ERROR at line 1:
ORA-00904: "DBMS_ALERT"."REGISTER": invalid identifier

此错误的原因可能是Oracle不会在名称dbms_alert.register的存储过程中查找,因此会给出一个通用的“我找不到此名称”错误。

如果你的问题不是我所描述的,请告诉我。

答案 1 :(得分:2)

可能根本没有安装这些软件包。如果您想安装它们,请查看$ ORACLE_HOME / rdbms / admin目录并以SYS身份运行脚本。我为上面列出的软件包提供了文件参考。

DBMS_ALERT   dbmsalrt.sql和prvtalrt.plb

DBMS_PIPE   dbmspipe.sql和prvtpipe.plb