2011-04-20 82 views
2

我是學生學習PL/SQL。我有一個本地安裝10g我正在運行我的查詢。每當我嘗試使用DBMS_ALERT,DBMS_PIPE或其他默認包時,我都會收到「無效的SQL」消息。我已經在TOAD和SQL + Plus中嘗試了相同的結果。這會讓我相信這些軟件包沒有安裝,或者無法訪問我的用戶會話。我使用'SYS'用戶登錄,所以我不認爲權限會成爲問題。Oracle 10g提供的軟件包不可用

有人可以請教我如何使這些軟件包avaialble?我的印象是他們默認提供的印象?

非常感謝你,

凱爾

+2

請告訴我們您正在運行的SQL – 2011-04-20 17:12:18

回答

2

這些軟件包可能根本就沒有安裝。如果您想安裝它們,請查看$ ORACLE_HOME/rdbms/admin目錄並以SYS運行腳本。我包含了上面列出的軟件包的文件參考。

DBMS_ALERT dbmsalrt.sql和prvtalrt.plb

DBMS_PIPE dbmspipe.sql和prvtpipe.plb

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 

原因這個錯誤可能是甲骨文不打擾存儲過程中尋找名稱dbms_alert.register,而是給出了一個通用的'我找不到這個名字'的錯誤。

如果您的問題不是我所描述的任何一種,請告訴我。