如何将存储过程添加到Oracle数据库?

问题描述:

通过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

调试这样的事情时,一个好处是:

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