无法在不同的数据库中执行存储过程?

时间:2009-05-04 09:33:57

标签: oracle visual-c++ stored-procedures

使用开发数据库执行正常但无法在生产数据库中执行的存储过程? 返回的错误是:“PLS-00306:调用<procedure naeme>时参数的数量或类型错误”

VC ++数据库oracle

已关闭:由于同义词错误而导致错误。

2 个答案:

答案 0 :(得分:0)

此错误与您正在执行的过程中的问题无关。此错误与您在一个数据库中调用它的方式有关。 DEV中的调用者正在发送参数和参数类型的正确组合。最终在PROD中调用过程的逻辑是发送不同的参数组合。

首先检查两个数据库中的过程规范,以确保它真的相同。查找参数,数据类型或DEFAULT NULL等之间的差异。

接下来检查调用数据库之间实际过程的逻辑。通常它会丢失其中一个参数或数据类型不正确。如果不使用命名表示法,则参数的排序也很重要。

如果你最终确定所有内容都相同,则可能是数据相关,其中一个参数缺少值,而且你的C ++驱动程序没有调用相同的过程。

这是一个可靠而明确的错误,它告诉你它的调用方式最终会有所不同。祝你好运。

答案 1 :(得分:0)

您应该提供更多信息。 至少,这些“基本”数据类型(NUMBER,DATE,VARCHAR2等)还是您有异国情调的数据类型(XMLTYPE,地理位置,用户定义的类型?) 使用SQL * Plus,连接到两个数据库中的模式并执行DESC 发布结果,以便我们可以看到它们。