【问题标题】:How to execute a procedure inside a package in oracleoracle如何在包内执行程序
【发布时间】:2014-07-20 06:55:09
【问题描述】:

我已经看到了一些与这个问题相关的答案。但是,我的问题还没有解决。

我的 oracle 包中有 3 个存储过程。

我正在尝试执行单个程序,但我想整个程序包正在执行。

我使用的语法:

没有输入或输出参数的存储过程

DECLARE
BEGIN
PackageName.Sp1;
END;

有人,请帮我看看我哪里出错了?

【问题讨论】:

  • 如果您在重新编译/重新验证程序包期间遇到错误,您的电话现在可以正常工作(使用 Rahul 的原始答案),但您的程序包刚刚损坏。创建包后执行show errors,或查询user_errors 视图,看看究竟出了什么问题。如果您无法修复它,请提出一个新问题,因为它与您如何称呼它无关。

标签: oracle stored-procedures packages


【解决方案1】:

只需像下面那样执行它。取出DECLARE 部分,因为不需要声明参数。

BEGIN
PackageName.Sp1;
END;

【讨论】:

  • 我收到很多错误,例如:重新编译/重新验证包期间的错误
  • @SaiAvinash,不太确定,但请参阅我编辑的答案。立即尝试。
  • 您确实需要在过程调用周围使用begin/end,在此示例中您不需要declare,因此您的第一个版本是正确的。 @SaiAvinash - 重新编译期间的错误不是因为你如何调用它,你的包有问题。
  • @AlexPoole,感谢您指出这一点。因为这是一个单一的声明,我虽然不需要 begin .. end 构造。仍然不确定,为什么需要它?
  • 您只能在 PL/SQL 上下文中调用过程;您可以在 PL/SQL 上下文中或(通常)从select 中调用函数。 SQL*Plus 确实有 execute PackageName.Sp1 速记,但这只是为您生成匿名块。
猜你喜欢
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多