2013-04-08 81 views
0

通過SQL Developer,我添加了一個新的存儲過程到Oracle數據庫。不僅它在存儲過程列表中列出(與其他所有SP一起),而且我可以在SQL Developer上輕鬆執行它。如何將存儲過程添加到Oracle數據庫?

問題是我似乎無法執行它從外部應用程序。數據庫被鏈接到它,我可以調用其他存儲過程,但不是我剛剛創建的那個。該錯誤消息我得到的是:

ORA-06550:第1行,第7列:PLS-00201:識別符 '的setDate' 必須聲明爲ORA-06550:第1行,第7列:PL/SQL:語句忽略

我已經從其他工作的SP複製訪問和權限配置,但它並沒有真正改變任何東西。

+1

你的查詢是什麼? – JoDev 2013-04-08 15:10:47

+2

您的應用程序是作爲過程的所有者連接的嗎?如果沒有,它是否被引用爲'user.procedure()';還有其他人在工作嗎?這聽起來像你可能有(也許是公共的)其他程序的同義詞,但不是你的新程序的同義詞......假設你已經正確地授予了執行權限。 – 2013-04-08 15:14:05

+0

真的有關嗎?這是通過SQL Developer執行時的工作。 – Rodrigo 2013-04-08 15:14:46

回答

1

調試這樣的事情時,一個好處是:

SELECT owner, object_name, object_type 
FROM all_objects 
WHERE object_name IN('PROCEDURE_WHICH_WORKS', 'PROCEDURE_WHICH_DOESNT') 

這應該可以很明顯的,如果SQL *開發者創造了它在錯誤的模式或有缺失的同義詞或類似的東西。如果它完全一樣,那麼你需要看看可能缺少GRANT EXECUTE權限。

您確定SQL * Developer和您的外部程序連接的是完全相同的用戶嗎?只是爲了確保你可以

SELECT user FROM dual 
相關問題