通过SQL Developer,我向Oracle数据库添加了新存储过程。它不仅列在存储过程列表中(与所有其他SP一起),而且我可以在SQL Developer上轻松执行它。
问题是我似乎无法从外部应用程序执行它。数据库链接到它,我可以调用每个其他存储过程,但不能调用我刚创建的存储过程。我得到的错误信息是:
ORA-06550:第1行第7列:PLS-00201:必须声明标识符'SETDATE'ORA-06550:第1行第7列:PL / SQL:忽略语句
我已经复制了其他可行的SP的访问和权限配置,但它并没有真正改变任何内容。
答案 0 :(得分:1)
调试此类事情时的好处是:
SELECT owner, object_name, object_type
FROM all_objects
WHERE object_name IN( 'PROCEDURE_WHICH_WORKS', 'PROCEDURE_WHICH_DOESNT' )
如果SQL * Developer在错误的模式中创建它或者缺少同义词或类似的东西,这应该是显而易见的。如果它完全相同,那么你需要查看可能缺少的GRANT EXECUTE权限。
您确定SQL * Developer和您的外部程序是否以完全相同的用户身份进行连接?只是为了确保你可以
SELECT user FROM dual