Plsql oracle中的PLS-00323错误

Plsql oracle中的PLS-00323错误,plsql,oracle10g,Plsql,Oracle10g,我正在包中创建一个过程。我已经更新了包的规范,当我更新包的主体时,它会显示以下错误 [错误]PLS-00323 314:13:PLS-00323:子程序或游标“插入客户地址”在包规范中声明,必须在包体中定义 注意:INSERT_CUSTOMER_ADDRESS是我的过程名称。如果在包规范中创建过程,则必须在包体中创建\实现该过程。将您的包规范视为接口和包体作为其实现。规范:函数ImithActukSukuNUM中的数字返回布尔值;p> Body:数字返回布尔值中的函数项\u ACTIVEP\u

我正在包中创建一个过程。我已经更新了包的规范,当我更新包的主体时,它会显示以下错误

[错误]PLS-00323 314:13:PLS-00323:子程序或游标“插入客户地址”在包规范中声明,必须在包体中定义


注意:INSERT_CUSTOMER_ADDRESS是我的过程名称。

如果在包规范中创建过程,则必须在包体中创建\实现该过程。将您的包规范视为接口和包体作为其实现。

规范:函数ImithActukSukuNUM中的数字返回布尔值;p> Body:数字返回布尔值中的函数项\u ACTIVEP\u SKU\u NUM

更改规格或主体,使其与精确匹配

包装规范和包装正文上的声明应始终相同

这意味着pkg规范中声明的过程/函数包括过程/函数的名称,参数类型应完全相同


注意:当oracle为上述错误案例编译pkg时,它不会给出确切的行号。

因为某人的旧错误对我来说总是新闻,我会加上我的3美分:

有人删除了他们的规范,但仍然有主体不,我不知道怎么做,他们不想把所有这些都重新输入

因此,我向他们展示了如何从主体生成规范:

将正文复制到工作表中。 在正文上方插入一个带有包名称的空标题。 编写 [无论是否出现错误,]右键单击包树中的包正文,然后选择同步规范和正文。 选择要在等级库中显示的对象,然后单击“确定”。 奇迹发生了 只有魔法没有发生-一切都变红了。。。有PLS-00323错误

SQLDeveloper通过从代码本身提取过程和函数头来填充包规范,因此您不必担心liek pselling的事情。它显示了要添加到包/等级库的对象列表,您可以选择要添加的对象

我们选择了正确的过程和函数,但编译时出现了错误。再一次再说一次

事实证明,抛出错误的函数是在包体中用DETERMINISTIC定义的——当SQLdev的编辑器进行同步时,它省略了这个词。这很重要

无论如何,在分号之前,回顾、粘贴特定函数,保存并重新编译,然后再次变魔术


您可能希望SQL开发人员完成全部工作,而不是半途而废。。。作业。

是的,我已在包体中添加了程序代码。这不是错误的原因。不知何故,当我更新程序体时,它不包括新的程序,尽管它在包体中。这似乎是一个奇怪的错误。一切都很好,但它仍然没有创建。可能太明显了,但请仔细检查过程名称是否完全相同,以及它接收到的所有参数是否完全相同。明白了,只是参数名称遗漏了一个字母。在处理这个问题的半个小时左右,这里出现了相同的错误。非常感谢。别忘了检查退货类型。这就是我的想法。请从下面选择一个解决方案并标记为答案。看起来问题已经在注释中解决了,您只是将注释重新整理成这个答案。注释很有用!