gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:20:13 25 4
gpt4 key购买 nike

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

有人可以教我如何使这些包可用吗?我的印象是它们是默认提供的?

非常感谢,

凯尔

最佳答案

您可能做错的一件事是尝试在 PL/SQL block 之外调用 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,因此给出了通用的“我找不到此名称” ' 错误。

如果您的问题不是我所描述的任何一个,请告诉我。

关于plsql - Oracle 10g 提供的软件包不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5734029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com