2009-05-04 62 views
0

存储过程在开发数据库中执行得很好,但在生产数据库中执行失败?返回 错误是:“PLS-00306:到<procedure naeme>错号码或类型的参数呼叫”无法在不同的数据库中执行存储过程?

VC++数据库Oracle

关闭:发生由于错误的代名词错误。

+0

有问题的过程的签名以及您用来调用此过程的代码会很有帮助。一个简单的例子应该足以清除问题而不会泄露任何私人信息。 – 2009-05-04 19:57:02

回答

0

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

首先检查两个数据库中的程序规范以确保它是真正相同的。查找参数,数据类型或DEFAULT NULL或类似值的差异。

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

如果最终你确定所有的都是一样的,那么它可能是数据相关的参数之一进入缺乏价值,你的C++驱动程序没有调用相同的过程。

这是一个明确而明确的错误,它告诉你最终在调用方式上存在一些差异。祝你好运。

+0

调用代码和调用sp在数据库中保持不变 – yesraaj 2009-05-04 10:25:36

0

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

相关问题