无法在PL SQL中调用包

时间:2016-12-19 20:07:31

标签: oracle plsql plsqldeveloper

我有一个已部署的软件包Pack1,每月运行一次,批处理作业没有任何问题。我需要使用一些自定义参数运行它,如下所示。但是我一直收到错误"必须声明Pack1" 。我无法想象我需要复制/粘贴整个存储过程来执行此操作吗?

BEGIN
Pack1(1
     ,TO_DATE('2016-06-01', 'YYYY-MM-DD')
     ,TO_DATE('2016-11-30', 'YYYY-MM-DD')
      );
END
;

1 个答案:

答案 0 :(得分:1)

你说你编译了包Pack1并打电话给Pack1(...)。你需要调用procedure而不是package,所以它应该是:Pack1.procedure(...)并且如注释中所提到的那样,将package作为拥有包的用户的前缀更安全,所以最终版本是:

BEGIN
user.Pack1.procedure(1
     ,TO_DATE('2016-06-01', 'YYYY-MM-DD')
     ,TO_DATE('2016-11-30', 'YYYY-MM-DD')
      );
END
/

另外,请检查您登录的用户是否有授权来执行该程序包。如果仍然无效,请分享您的包裹代码。